Skip to content

Commit 824dedd

Browse files
committed
feat: add delete feature in application page
1 parent 7cef811 commit 824dedd

File tree

1 file changed

+46
-14
lines changed
  • src/client/routes/application/$applicationId

1 file changed

+46
-14
lines changed

src/client/routes/application/$applicationId/index.tsx

+46-14
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
1010
import { useCurrentWorkspaceId, useHasAdminPermission } from '@/store/user';
1111
import { routeAuthBeforeLoad } from '@/utils/route';
1212
import { createFileRoute, useNavigate } from '@tanstack/react-router';
13-
import { LuPencil } from 'react-icons/lu';
13+
import { LuPencil, LuTrash } from 'react-icons/lu';
1414
import { useTranslation } from '@i18next-toolkit/react';
1515
import { ApplicationOverviewCard } from '@/components/application/ApplicationOverviewCard';
1616
import { ApplicationDetailCard } from '@/components/application/ApplicationDetailCard';
1717
import { ApplicationStatsChart } from '@/components/application/ApplicationStatsChart';
18+
import { AlertConfirm } from '@/components/AlertConfirm';
19+
import { message } from 'antd';
1820

1921
export const Route = createFileRoute('/application/$applicationId/')({
2022
beforeLoad: routeAuthBeforeLoad,
@@ -31,6 +33,25 @@ function PageComponent() {
3133
const navigate = useNavigate();
3234
const hasAdminPermission = useHasAdminPermission();
3335
const { t } = useTranslation();
36+
const trpcUtils = trpc.useUtils();
37+
38+
const deleteMutation = trpc.application.delete.useMutation({
39+
onError: (error) => {
40+
message.error(error.message);
41+
},
42+
});
43+
44+
const handleDeleteApplication = async () => {
45+
await deleteMutation.mutateAsync({ workspaceId, applicationId });
46+
47+
message.success(t('Delete Success'));
48+
49+
await trpcUtils.application.all.refetch({ workspaceId });
50+
51+
navigate({
52+
to: '/application',
53+
});
54+
};
3455

3556
if (!applicationId) {
3657
return <ErrorTip />;
@@ -52,19 +73,30 @@ function PageComponent() {
5273
actions={
5374
<div className="space-x-2">
5475
{hasAdminPermission && (
55-
<Button
56-
size="icon"
57-
variant="outline"
58-
Icon={LuPencil}
59-
onClick={() =>
60-
navigate({
61-
to: '/application/$applicationId/edit',
62-
params: {
63-
applicationId,
64-
},
65-
})
66-
}
67-
/>
76+
<>
77+
<Button
78+
size="icon"
79+
variant="outline"
80+
Icon={LuPencil}
81+
onClick={() =>
82+
navigate({
83+
to: '/application/$applicationId/edit',
84+
params: {
85+
applicationId,
86+
},
87+
})
88+
}
89+
/>
90+
<AlertConfirm
91+
title={t('Delete Application') + ' ' + application.name}
92+
description={t(
93+
'Are you sure you want to delete this application? This action cannot be undone.'
94+
)}
95+
onConfirm={handleDeleteApplication}
96+
>
97+
<Button size="icon" variant="outline" Icon={LuTrash} />
98+
</AlertConfirm>
99+
</>
68100
)}
69101
</div>
70102
}

0 commit comments

Comments
 (0)