TTMT.ManageWebGUI/src/routes/_authenticated/command/index.tsx

47 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-09-24 16:13:57 +07:00
import { createFileRoute } from "@tanstack/react-router";
import { FormSubmitTemplate } from "@/template/form-submit-template";
import { ShellCommandForm } from "@/components/command-form";
import { useMutationData } from "@/hooks/useMutationData";
import { BASE_URL, API_ENDPOINTS } from "@/config/api";
import { toast } from "sonner";
export const Route = createFileRoute("/_authenticated/command/")({
head: () => ({ meta: [{ title: "Gửi lệnh CMD" }] }),
component: CommandPage,
});
function CommandPage() {
const sendCommandMutation = useMutationData<
string,
{ success: boolean; output: string }
>({
url: BASE_URL + API_ENDPOINTS.DEVICE_COMM.SEND_COMMAND,
method: "POST",
onSuccess: (data) => {
if (data.success) {
toast.success("Lệnh đã được gửi thành công!");
} else {
toast.error("Lệnh không thể thực thi trên thiết bị!");
}
},
onError: (error) => {
console.error("Send command error:", error);
toast.error("Gửi lệnh thất bại!");
},
});
return (
<FormSubmitTemplate
title="CMD Command"
description="Gửi lệnh shell xuống thiết bị để thực thi"
isLoading={sendCommandMutation.isPending}
>
<ShellCommandForm
onExecute={async (cmd: string) => {
return await sendCommandMutation.mutateAsync({ data: cmd });
}}
/>
</FormSubmitTemplate>
);
}