diff --git a/src/components/flight/FlightCreateForm.jsx b/src/components/flight/FlightCreateForm.jsx
index 962563f..7b62c1c 100644
--- a/src/components/flight/FlightCreateForm.jsx
+++ b/src/components/flight/FlightCreateForm.jsx
@@ -1,4 +1,4 @@
-import React, { useState, useContext, useEffect } from 'react';
+import React, { useState, useContext, useEffect, useRef } from 'react';
import useFetch from '../../hooks/useFetch.jsx';
import { useNavigate } from 'react-router-dom';
import { createData } from '../../utils/create.js';
@@ -14,6 +14,7 @@ import { formatTime } from '../../utils/formatting.js';
export default function FlightCreateForm() {
const [pageNumber, setPageNumber] = useState(1);
+ const isInitialLoad = useRef(true);
const [allAirlines, setAllAirlines] = useState([]);
const [allDestinations, setAllDestinations] = useState([]);
@@ -88,16 +89,35 @@ export default function FlightCreateForm() {
};
useEffect(() => {
- if (airlines?.data) {
- setAllAirlines((prev) => [...prev, ...airlines.data]);
+ if (isInitialLoad.current) {
+ isInitialLoad.current = false;
+ return;
+ }
+ if (airlines?.data && airlines.data.length > 0) {
+ setAllAirlines((prev) => {
+ const newAirlines = airlines.data.filter(
+ (airline) => !prev.some((prevAirline) => prevAirline.id === airline.id)
+ );
+ return [...prev, ...newAirlines];
+ });
}
- if (destinations?.data) {
- setAllDestinations((prev) => [...prev, ...destinations.data]);
+ if (destinations?.data && destinations.data.length > 0) {
+ setAllDestinations((prev) => {
+ const newDestinations = destinations.data.filter(
+ (destination) => !prev.some((prevDestination) => prevDestination.id === destination.id)
+ );
+ return [...prev, ...newDestinations];
+ });
}
- if (pilots?.data) {
- setAllPilots((prev) => [...prev, ...pilots.data]);
+ if (pilots?.data && pilots.data.length > 0) {
+ setAllPilots((prev) => {
+ const newPilots = pilots.data.filter(
+ (pilot) => !prev.some((prevPilot) => prevPilot.id === pilot.id)
+ );
+ return [...prev, ...newPilots];
+ });
}
- }, [airlines.data, destinations.data, pilots.data]);
+ }, [pageNumber, airlines?.data, destinations?.data, pilots?.data]);
if (isLoadingAirlines || isLoadingDestinations || isLoadingPilots) {
return