From 12fb7c48ed520f2eabcfcf6921006242cc54e667 Mon Sep 17 00:00:00 2001 From: Tran Anh Tuan Date: Wed, 10 Dec 2025 20:05:34 +0700 Subject: [PATCH] =?UTF-8?q?s=E1=BB=ADa=20l=E1=BB=97i=20form=20kh=C3=B4ng?= =?UTF-8?q?=20reset,=20c=E1=BA=ADp=20nh=E1=BA=ADt=20th=C3=AAm=20h=C3=A0m?= =?UTF-8?q?=20g=E1=BB=8Di=20api=20khi=20th=C3=AAm=20m=E1=BB=9Bi=20t=C3=A0u?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ship_components/CreateOrUpdateShip.tsx | 6 ++++++ components/manager/ships.tsx | 15 ++++++++++----- controller/DeviceController.ts | 3 +++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/components/manager/ship_components/CreateOrUpdateShip.tsx b/components/manager/ship_components/CreateOrUpdateShip.tsx index f5da134..4ee9803 100644 --- a/components/manager/ship_components/CreateOrUpdateShip.tsx +++ b/components/manager/ship_components/CreateOrUpdateShip.tsx @@ -96,6 +96,12 @@ const CreateOrUpdateShip = (props: CreateOrUpdateShipProps) => { } }, [props.isOpen, props.initialValue, reset]); + useEffect(() => { + if (props.type === "create") { + reset(props.initialValue); + } + }, [props.isOpen]); + // Prepare options for selects const shipTypeOptions = useMemo(() => { return (shipTypes || []).map((type) => ({ diff --git a/components/manager/ships.tsx b/components/manager/ships.tsx index 4d49daa..7cf100c 100644 --- a/components/manager/ships.tsx +++ b/components/manager/ships.tsx @@ -1,6 +1,9 @@ import { ThemedText } from "@/components/themed-text"; import { ThemedView } from "@/components/themed-view"; -import { queryUpdateShip } from "@/controller/DeviceController"; +import { + queryCreateShip, + queryUpdateShip, +} from "@/controller/DeviceController"; import { useTheme } from "@/hooks/use-theme-context"; import { showSuccessToast } from "@/services/toast_service"; import { useShip } from "@/state/use-ship"; @@ -45,12 +48,14 @@ export default function ShipsScreen() { setIsCreateShip(false); // Đảm bảo là mode update khi edit setShowUpdateShip(true); }; - const handleUpdateShip = async (body: Model.ShipBodyRequest) => { + const handleSubmitForm = async (body: Model.ShipBodyRequest) => { try { let resp; if (isCreateShip) { - // TODO: Thêm API create ship khi có - showSuccessToast("Thêm tàu mới thành công"); + resp = await queryCreateShip(body); + if (resp.status === 201) { + showSuccessToast("Thêm tàu mới thành công"); + } } else { resp = await queryUpdateShip(ship!.ship_id, body); if (resp.status === 200) { @@ -99,7 +104,7 @@ export default function ShipsScreen() { initialValue={ship?.body || undefined} type={isCreateShip ? "create" : "update"} onClose={() => setShowUpdateShip(false)} - onSubmit={handleUpdateShip} + onSubmit={handleSubmitForm} /> ); diff --git a/controller/DeviceController.ts b/controller/DeviceController.ts index b72b472..009e6b0 100644 --- a/controller/DeviceController.ts +++ b/controller/DeviceController.ts @@ -31,6 +31,9 @@ export async function queryShipsImage(ship_id: string) { }); } +export async function queryCreateShip(body: Model.ShipBodyRequest) { + return await api.post(`${API_GET_ALL_SHIP}`, body); +} export async function queryUpdateShip( shipId: string, body: Model.ShipBodyRequest