Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/assets/icons/arrow_spin.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion src/components/dateCourse/dateCourseSearchFilterOption.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,9 @@ export default function DateCourseSearchFilterOption({
onChange={handleInputChange}
/>
</div>
{regionList && regionList.result.regions.length > 0 && (
{regionList && (
<ul className="mt-2 w-full border border-primary-500 rounding-16 shadow-default bg-white max-h-[200px] overflow-auto">
{regionList?.result.regions.length === 0 && <div className="text-center py-8 text-default-gray-500">검색 결과가 없습니다</div>}
{regionList.result.regions.map((region: TRegion, idx: number) => (
<li
key={idx}
Expand Down
10 changes: 9 additions & 1 deletion src/components/modal/dateCourseSearchFilterModal.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useMemo } from 'react';
import { useEffect, useMemo } from 'react';
import { Navigate, useLocation } from 'react-router-dom';
import ClipLoader from 'react-spinners/ClipLoader';

Expand Down Expand Up @@ -78,6 +78,14 @@ export default function DateCourseSearchFilterModal({ onClose }: TProps) {
const isBookmarked = location.pathname === '/bookmarkedCourse';

const { budget, datePlaces, dateDurationTime, startTime, mealTypes, transportation, userPreferredKeywords, setField } = useFilterStore();
useEffect(() => {
if (!startTime) {
const now = new Date();
const defaultDate = now.toISOString().slice(0, 10);
const defaultTime = now.toTimeString().slice(0, 5);
setField('startTime', `${defaultDate}T${defaultTime}`);
}
}, [startTime, setField]);

const commonParams = {
budget,
Expand Down
20 changes: 9 additions & 11 deletions src/pages/dateCourse/CoursePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import ClipLoader from 'react-spinners/ClipLoader';
import useGetBookmarkedCourse from '@/hooks/course/useGetBookmarkedCourse';
import { useUserGrade } from '@/hooks/home/useUserGrade';

import Button from '@/components/common/Button';
import { MODAL_TYPES } from '@/components/common/modalProvider';
import Navigator from '@/components/common/navigator';
import DateCourse from '@/components/dateCourse/dateCourse';
Expand Down Expand Up @@ -43,18 +44,12 @@ export default function Course() {
<div className="flex flex-col justify-center items-center w-full">
<div className="flex w-[1000px] max-w-[80vw] flex-col py-[24px] gap-[64px]">
<div className="flex flex-col gap-[22px]">
<button
className="bg-primary-500 py-[20px] rounding-16 text-default-gray-100 font-heading3 select-none"
onClick={() => navigate('/makeCourse')}
>
<Button size="big-16" variant="mint" onClick={() => navigate('/makeCourse')}>
AI 기반 데이트 코스 만들기
</button>
<button
className="bg-primary-500 py-[20px] rounding-16 text-default-gray-100 font-heading3 select-none"
onClick={() => navigate('/findCourse')}
>
</Button>
<Button size="big-16" variant="mint" onClick={() => navigate('/findCourse')}>
직접 데이트 코스 찾아보기
</button>
</Button>
</div>
<div className="flex flex-col shadow-default rounding-16 px-[10px] sm:px-[40px] py-[24px]">
<div className="flex w-full justify-between py-[24px] gap-[12px] lg:flex-row flex-col">
Expand All @@ -64,7 +59,10 @@ export default function Course() {
<div className="flex gap-[12px] justify-center items-center sm:justify-end flex-col sm:flex-row">
<div
className="hover:cursor-pointer select-none px-[16px] py-[8px] gap-[4px] text-body2 rounding-16 flex rounding-16 w-fit border-[1px] border-default-gray-700 text-default-gray-700"
onClick={() => reset()}
onClick={() => {
alert('필터가 초기화 되었습니다');
reset();
}}
>
필터 초기화
</div>
Expand Down
5 changes: 4 additions & 1 deletion src/pages/dateCourse/FindDateCourse.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,10 @@ function FindDateCourse() {
<div className="flex gap-2">
<div
className="hover:cursor-pointer select-none px-[16px] py-[8px] gap-[4px] text-body2 rounding-16 flex rounding-16 w-fit border-[1px] border-default-gray-700 text-default-gray-700"
onClick={() => reset()}
onClick={() => {
alert('필터가 초기화 되었습니다');
reset();
}}
>
필터 초기화
</div>
Expand Down
56 changes: 31 additions & 25 deletions src/pages/dateCourse/MakeCourseResult.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,33 +19,35 @@ export default function MakeCourseResult() {
const navigate = useNavigate();
const { setAll, ...courseData } = useDateCourseResultStore();
const { useMakeCourse } = useCourse();
const { budget, datePlaces, dateDurationTime, mealTypes, transportation, userPreferredKeywords, startTime } = useFilterStore();
const { budget, datePlaces, dateDurationTime, mealTypes, transportation, userPreferredKeywords, startTime, reset } = useFilterStore();
const { mutate: makeCourseMutate, isPending } = useMakeCourse;
const { data: gradeData } = useUserGrade();

const handleSubmit = () => {
makeCourseMutate(
{
budget: budget!,
dateDurationTime: dateDurationTime!,
datePlaces: datePlaces,
mealTypes: mealTypes,
transportation: transportation!,
userPreferredKeywords,
startTime: startTime!,
excludedCourseSignatures: SigStorage.get(),
},
{
onSuccess: (data) => {
SigStorage.append(data.result.signature);
setAll(data.result);
navigate('/makeCourse/result');
},
onError: () => {
navigate('/makeCourse');
},
},
);
courseData.datePlaces && courseData.datePlaces?.length > 0
? makeCourseMutate(
{
budget: budget!,
dateDurationTime: dateDurationTime!,
datePlaces: datePlaces,
mealTypes: mealTypes,
transportation: transportation!,
userPreferredKeywords,
startTime: startTime!,
excludedCourseSignatures: SigStorage.get(),
},
{
onSuccess: (data) => {
SigStorage.append(data.result.signature);
setAll(data.result);
navigate('/makeCourse/result');
},
onError: () => {
navigate('/makeCourse');
},
},
)
: (navigate('/makeCourse'), reset());
};
if (isPending) {
return <DateCourseLoading />;
Expand All @@ -64,12 +66,16 @@ export default function MakeCourseResult() {
<div className="flex flex-col w-full gap-2 justify-center py-14 text-center font-heading3">
입력하신 조건을 만족하는 데이트 코스 제작에 실패하였습니다.
<br />
<br />
<span className="font-body1">다른 조건으로 재시도 해보세요</span>
<span className="font-body1">
(현재 운영 초기 단계로 데이터가 많지 않아 '서울시 종로구 인사동'으로 데이트 코스 생성하는 것을 권장드립니다.)
</span>
</div>
)}
</div>
<Button size="big-16" variant="mint" className="flex mt-[40px] self-center px-[32px] items-center gap-[8px]">
<Reload />
<Button size="big-16" variant="mint" className="flex mt-[40px] self-center px-[32px] items-center gap-[8px] group">
<Reload className="fill-white group-hover:fill-primary-900 transition-colors" />
<div className="flex flex-col items-center justify-center">
<div className="font-heading3 select-none" onClick={handleSubmit}>
다시 만들기
Expand Down