From c02b61163dd25afc86b48b15d91c0ec20941e361 Mon Sep 17 00:00:00 2001 From: MinhNN Date: Fri, 7 Nov 2025 17:56:13 +0700 Subject: [PATCH] Update from master --- app/(tabs)/diary.tsx | 2 +- app/(tabs)/index.tsx | 140 +++---- components/ButtonCreateNewHaulOrTrip.tsx | 1 + .../modal/CreateOrUpdateHaulModal.tsx | 359 ++---------------- .../NetDetailModal/components/InfoSection.tsx | 46 +-- 5 files changed, 106 insertions(+), 442 deletions(-) diff --git a/app/(tabs)/diary.tsx b/app/(tabs)/diary.tsx index ffb70c9..ff8592e 100644 --- a/app/(tabs)/diary.tsx +++ b/app/(tabs)/diary.tsx @@ -9,7 +9,7 @@ export default function Warning() { { - getGpsEventBus(); - getAlarmEventBus(); - getEntitiesEventBus(); - getBanzonesEventBus(); - getTrackPointsEventBus(); - const queryGpsData = (gpsData: Model.GPSResponse) => { - if (gpsData) { - // console.log("GPS Data: ", gpsData); - setGpsData(gpsData); - } else { - setGpsData(null); - setPolygonCoordinates([]); - setPolylineCoordinates(null); - } - }; - const queryAlarmData = (alarmData: Model.AlarmResponse) => { - // console.log("Alarm Data: ", alarmData.alarms.length); - setAlarmData(alarmData); - }; - const queryEntityData = (entityData: Model.TransformedEntity[]) => { - // console.log("Entities Length Data: ", entityData.length); - setEntityData(entityData); - }; - const queryBanzonesData = (banzoneData: Model.Zone[]) => { - // console.log("Banzone Data: ", banzoneData.length); + // useEffect(() => { + // getGpsEventBus(); + // getAlarmEventBus(); + // getEntitiesEventBus(); + // getBanzonesEventBus(); + // getTrackPointsEventBus(); + // const queryGpsData = (gpsData: Model.GPSResponse) => { + // if (gpsData) { + // // console.log("GPS Data: ", gpsData); + // setGpsData(gpsData); + // } else { + // setGpsData(null); + // setPolygonCoordinates([]); + // setPolylineCoordinates(null); + // } + // }; + // const queryAlarmData = (alarmData: Model.AlarmResponse) => { + // // console.log("Alarm Data: ", alarmData.alarms.length); + // setAlarmData(alarmData); + // }; + // const queryEntityData = (entityData: Model.TransformedEntity[]) => { + // // console.log("Entities Length Data: ", entityData.length); + // setEntityData(entityData); + // }; + // const queryBanzonesData = (banzoneData: Model.Zone[]) => { + // // console.log("Banzone Data: ", banzoneData.length); - setBanzoneData(banzoneData); - }; - const queryTrackPointsData = (TrackPointsData: Model.ShipTrackPoint[]) => { - // console.log("TrackPoints Data: ", TrackPointsData.length); - if (TrackPointsData && TrackPointsData.length > 0) { - setTrackPointsData(TrackPointsData); - } else { - setTrackPointsData(null); - } - }; + // setBanzoneData(banzoneData); + // }; + // const queryTrackPointsData = (TrackPointsData: Model.ShipTrackPoint[]) => { + // // console.log("TrackPoints Data: ", TrackPointsData.length); + // if (TrackPointsData && TrackPointsData.length > 0) { + // setTrackPointsData(TrackPointsData); + // } else { + // setTrackPointsData(null); + // } + // }; - eventBus.on(EVENT_GPS_DATA, queryGpsData); - // console.log("Registering event handlers in HomeScreen"); - eventBus.on(EVENT_GPS_DATA, queryGpsData); - // console.log("Subscribed to EVENT_GPS_DATA"); - eventBus.on(EVENT_ALARM_DATA, queryAlarmData); - // console.log("Subscribed to EVENT_ALARM_DATA"); - eventBus.on(EVENT_ENTITY_DATA, queryEntityData); - // console.log("Subscribed to EVENT_ENTITY_DATA"); - eventBus.on(EVENT_TRACK_POINTS_DATA, queryTrackPointsData); - // console.log("Subscribed to EVENT_TRACK_POINTS_DATA"); - eventBus.once(EVENT_BANZONE_DATA, queryBanzonesData); - // console.log("Subscribed once to EVENT_BANZONE_DATA"); + // eventBus.on(EVENT_GPS_DATA, queryGpsData); + // // console.log("Registering event handlers in HomeScreen"); + // eventBus.on(EVENT_GPS_DATA, queryGpsData); + // // console.log("Subscribed to EVENT_GPS_DATA"); + // eventBus.on(EVENT_ALARM_DATA, queryAlarmData); + // // console.log("Subscribed to EVENT_ALARM_DATA"); + // eventBus.on(EVENT_ENTITY_DATA, queryEntityData); + // // console.log("Subscribed to EVENT_ENTITY_DATA"); + // eventBus.on(EVENT_TRACK_POINTS_DATA, queryTrackPointsData); + // // console.log("Subscribed to EVENT_TRACK_POINTS_DATA"); + // eventBus.once(EVENT_BANZONE_DATA, queryBanzonesData); + // // console.log("Subscribed once to EVENT_BANZONE_DATA"); + + // return () => { + // // console.log("Unregistering event handlers in HomeScreen"); + // eventBus.off(EVENT_GPS_DATA, queryGpsData); + // // console.log("Unsubscribed EVENT_GPS_DATA"); + // eventBus.off(EVENT_ALARM_DATA, queryAlarmData); + // // console.log("Unsubscribed EVENT_ALARM_DATA"); + // eventBus.off(EVENT_ENTITY_DATA, queryEntityData); + // // console.log("Unsubscribed EVENT_ENTITY_DATA"); + // eventBus.off(EVENT_TRACK_POINTS_DATA, queryTrackPointsData); + // // console.log("Unsubscribed EVENT_TRACK_POINTS_DATA"); + // }; + // }, []); - return () => { - // console.log("Unregistering event handlers in HomeScreen"); - eventBus.off(EVENT_GPS_DATA, queryGpsData); - // console.log("Unsubscribed EVENT_GPS_DATA"); - eventBus.off(EVENT_ALARM_DATA, queryAlarmData); - // console.log("Unsubscribed EVENT_ALARM_DATA"); - eventBus.off(EVENT_ENTITY_DATA, queryEntityData); - // console.log("Unsubscribed EVENT_ENTITY_DATA"); - eventBus.off(EVENT_TRACK_POINTS_DATA, queryTrackPointsData); - // console.log("Unsubscribed EVENT_TRACK_POINTS_DATA"); - }; - }, []); useEffect(() => { setPolylineCoordinates(null); setPolygonCoordinates([]); diff --git a/components/ButtonCreateNewHaulOrTrip.tsx b/components/ButtonCreateNewHaulOrTrip.tsx index 7246af0..2808b9a 100644 --- a/components/ButtonCreateNewHaulOrTrip.tsx +++ b/components/ButtonCreateNewHaulOrTrip.tsx @@ -173,6 +173,7 @@ const ButtonCreateNewHaulOrTrip: React.FC = ({ )} ({ label: unit, value: unit.toString(), @@ -60,9 +60,11 @@ const CreateOrUpdateHaulModal: React.FC = ({ }, mode: "onSubmit", }); - + const { fishSpecies, getFishSpecies } = useFishes(); const { errors } = formState; - + if (!fishSpecies) { + getFishSpecies(); + } const { fields, append, remove } = useFieldArray({ control, name: "fish", @@ -70,7 +72,25 @@ const CreateOrUpdateHaulModal: React.FC = ({ }); const onSubmit = (values: FormValues) => { - console.log("SUBMIT: ", JSON.stringify(values, null, 2)); + // Map form values to the FishingLogInfo-like shape the user requested + const mapped = values.fish.map((f) => { + const meta = fishSpecies!.find((x) => x.id === f.id); + return { + fish_species_id: f.id, + fish_name: meta?.name, + catch_number: f.quantity, + catch_unit: f.unit, + fish_size: f.size, + fish_rarity: meta?.rarity_level, + fish_condition: "", + gear_usage: "", + } as unknown; // inferred shape — keep as unknown to avoid relying on global types here + }); + + console.log("SUBMIT (FishingLogInfo[]): ", JSON.stringify(mapped, null, 2)); + + // close modal after submit (you can change this to pass the payload to a parent via prop) + onClose(); }; // Initialize / reset form when modal visibility or haulData changes @@ -125,7 +145,7 @@ const CreateOrUpdateHaulModal: React.FC = ({ Tên cá