Skip to content

Commit 894a23c

Browse files
committed
feat(web): Implement download docker terraform template functionality
1 parent 3025f71 commit 894a23c

2 files changed

Lines changed: 55 additions & 8 deletions

File tree

web/src/pages/terraform-template/Docker/docker.tsx

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,22 @@
11
import { cn } from '@/lib/utils';
2-
import { FC, useState } from 'react';
2+
import { FC, FormEvent, useState } from 'react';
3+
import { DockerBody, DockerResponse } from './docker.types';
4+
import { usePost } from '@/core/react-query';
5+
import { useDownload } from '@/hooks';
6+
import { TerraformTemplateAPI } from '@/enums/api.enums';
7+
import { toast } from 'sonner';
38

49
const Docker: FC = () => {
10+
const { mutateAsync: dockerMutate, isPending: dockerPending } = usePost<
11+
DockerResponse,
12+
DockerBody
13+
>(TerraformTemplateAPI.Docker, 'docker');
14+
const { download, isPending: downloadPending } = useDownload({
15+
folderName: 'MyTerraform',
16+
source: 'iam',
17+
downloadFileName: 'Iam',
18+
});
19+
520
const [services, setServices] = useState({
621
docker_image: false,
722
docker_container: false,
@@ -14,11 +29,27 @@ const Docker: FC = () => {
1429
}));
1530
};
1631

32+
const handleForm = async (e: FormEvent) => {
33+
e.preventDefault();
34+
35+
try {
36+
const dockerBody: DockerBody = {
37+
...services,
38+
};
39+
40+
await dockerMutate(dockerBody);
41+
await download();
42+
} catch (error) {
43+
console.log(error);
44+
toast.error('Something went wrong');
45+
}
46+
};
47+
1748
return (
18-
<div className="w-full max-w-96">
19-
<div className="border border-gray-500 rounded-md">
49+
<form onSubmit={handleForm} className="w-full max-w-96">
50+
<div className="rounded-md border border-gray-500">
2051
<div className="divide-y divide-gray-500">
21-
<div className="flex items-center justify-between w-full px-3 py-3">
52+
<div className="flex w-full items-center justify-between px-3 py-3">
2253
<p>Key Pair</p>
2354
<input
2455
type="checkbox"
@@ -28,7 +59,7 @@ const Docker: FC = () => {
2859
onChange={() => handleServices('docker_image')}
2960
/>
3061
</div>
31-
<div className="flex items-center justify-between w-full px-3 py-3">
62+
<div className="flex w-full items-center justify-between px-3 py-3">
3263
<p>Security Group</p>
3364
<input
3465
type="checkbox"
@@ -41,10 +72,18 @@ const Docker: FC = () => {
4172
</div>
4273
</div>
4374
</div>
44-
<button className="w-full mt-3 text-white btn bg-orange-base hover:bg-orange-base/70">
45-
Submit
75+
<button
76+
type="submit"
77+
disabled={dockerPending || downloadPending}
78+
className="btn mt-3 w-full bg-orange-base text-white hover:bg-orange-base/70 disabled:bg-orange-base/50 disabled:text-white/70"
79+
>
80+
{dockerPending
81+
? 'Generate Terraform...'
82+
: downloadPending
83+
? 'Downloading Template...'
84+
: 'Generate Terraform'}
4685
</button>
47-
</div>
86+
</form>
4887
);
4988
};
5089

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export interface DockerBody {
2+
docker_image: boolean;
3+
docker_container: boolean;
4+
}
5+
6+
export interface DockerResponse {
7+
output: string;
8+
}

0 commit comments

Comments
 (0)