Skip to content

Commit 30e3324

Browse files
committed
feat(web): Implement download s3 terraform template functionality
1 parent 1ccb235 commit 30e3324

4 files changed

Lines changed: 59 additions & 12 deletions

File tree

web/src/pages/terraform-template/ARGOCD/argocd.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,9 @@ const Argocd: FC = () => {
164164
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"
165165
>
166166
{argocdPending
167-
? 'GPT Answer...'
167+
? 'Generate Terraform...'
168168
: downloadPending
169-
? 'Generate Terraform...'
169+
? 'Downloading Template...'
170170
: 'Generate Terraform'}
171171
</button>
172172
</form>

web/src/pages/terraform-template/IAM/iam.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ const IAM: FC = () => {
7777
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"
7878
>
7979
{iamPending
80-
? 'GPT Answer...'
80+
? 'Generate Terraform...'
8181
: downloadPending
82-
? 'Generate Terraform...'
82+
? 'Downloading Template...'
8383
: 'Generate Terraform'}
8484
</button>
8585
</form>

web/src/pages/terraform-template/S3/s3.tsx

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

49
const S3: FC = () => {
10+
const { mutateAsync: s3Mutate, isPending: s3Pending } = usePost<
11+
S3Response,
12+
S3Body
13+
>(TerraformTemplateAPI.S3, 's3');
14+
const { download, isPending: downloadPending } = useDownload({
15+
folderName: 'MyTerraform',
16+
source: 'iam',
17+
downloadFileName: 'Iam',
18+
});
19+
520
const [services, setServices] = useState({
621
s3_bucket: false,
722
bucket_versioning: false,
@@ -14,11 +29,27 @@ const S3: FC = () => {
1429
}));
1530
};
1631

32+
const handleForm = async (e: FormEvent) => {
33+
e.preventDefault();
34+
35+
try {
36+
const s3Body: S3Body = {
37+
...services,
38+
};
39+
40+
await s3Mutate(s3Body);
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>S3 Bucket</p>
2354
<input
2455
type="checkbox"
@@ -28,7 +59,7 @@ const S3: FC = () => {
2859
onChange={() => handleServices('s3_bucket')}
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>Bucket Versioning</p>
3364
<input
3465
type="checkbox"
@@ -41,10 +72,18 @@ const S3: 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={s3Pending || 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+
{s3Pending
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 S3Body {
2+
s3_bucket: boolean;
3+
bucket_versioning: boolean;
4+
}
5+
6+
export interface S3Response {
7+
output: string;
8+
}

0 commit comments

Comments
 (0)