경유 시 대기 시간 표시 (OK)
function calculateWaitingTime(
totalDuration: string,
...segmentDurations: string[]
) {
const totalMinutes = parseDuration(totalDuration);
const totalSegmentMinutes = segmentDurations.reduce(
(acc: number, duration: string) => acc + parseDuration(duration),
0,
);
const waitingMinutes = totalMinutes - totalSegmentMinutes;
// 시간 환산
const waitingHours = Math.floor(waitingMinutes / 60);
const waitingMins = waitingMinutes % 60;
return `${waitingHours}시간 ${Number(waitingMins) > 0 ? `${waitingMins}분` : ""}`;
}
모바일에서 대기 시간을 보여줄 공간이 부족
⇒ “경유 n번”만 표시하고 상세에서 대기 시간을 자세히 보여줄 예정
출발 날짜와 도착 날짜가 다르면 +1 표시
트러블 슈팅 (8월 31일 출발, 9월 1일 도착 시 “-30”이라고 뜨는 버그 발생!)
function calculateDayDifference(departureTime: string, arrivalTime: string) {
const departureDate = new Date(departureTime);
const arrivalDate = new Date(arrivalTime);
const dayDifference = arrivalDate.getDate() - departureDate.getDate();
return dayDifference;
}
해결
function calculateDayDifference(departureTime: string, arrivalTime: string) {
const departureDate = new Date(departureTime);
const arrivalDate = new Date(arrivalTime);
const timeDifference = arrivalDate.getTime() - departureDate.getTime();
const dayDifference = timeDifference / (1000 * 60 * 60 * 24);
return Math.floor(dayDifference);
}
등록 안 한 항공사
code에 들어있는 항공사와 validating 하는 작업 진행
const filteredData = data.filter((offer) =>
offer.itineraries.some((itinerary) =>
itinerary.segments.some((segment) =>
Object.keys(airline).includes(segment.carrierCode),
),
),
);
경유 시 항공사 바뀌는 경우
flight-offers-pricing api 호출
헤더에 특이사항 존재!
const res = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-HTTP-Method-Override": "GET",
Authorization: `Bearer ${accessToken}`,
},
body: JSON.stringify(request),
});