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
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ interface Props {
params: Promise<{ groupId: string }>;
}

const EditMeetupLayout = async ({ children, params }: Props) => {
const EditGroupLayout = async ({ children, params }: Props) => {
const queryClient = new QueryClient();

const { groupId } = await params;
Expand All @@ -27,12 +27,12 @@ const EditMeetupLayout = async ({ children, params }: Props) => {
const isEditable = status !== 'FINISHED';

if (!isHost || !isEditable) {
redirect('/post-meetup');
redirect('/create-group');
}

const dehydratedState = dehydrate(queryClient);

return <HydrationBoundary state={dehydratedState}>{children}</HydrationBoundary>;
};

export default EditMeetupLayout;
export default EditGroupLayout;
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ import { use } from 'react';
import { useForm } from '@tanstack/react-form';

import {
MeetupCapField,
MeetupDateField,
MeetupDetailField,
MeetupImagesField,
MeetupLocationField,
MeetupSubmitButton,
MeetupTagsField,
MeetupTitleField,
} from '@/components/pages/post-meetup';
GroupCapField,
GroupDateField,
GroupDetailField,
GroupImagesField,
GroupLocationField,
GroupSubmitButton,
GroupTagsField,
GroupTitleField,
} from '@/components/pages/create-group';
import { useEditGroup } from '@/hooks/use-group/use-group-edit';
import { useGetGroupDetails } from '@/hooks/use-group/use-group-get-details';
import { CreateGroupFormValues, createGroupSchema } from '@/lib/schema/group';
Expand All @@ -25,7 +25,7 @@ interface Props {
params: Promise<{ groupId: string }>;
}

const EditMeetupPage = ({ params }: Props) => {
const EditGroupPage = ({ params }: Props) => {
const { groupId } = use(params);
const { replace } = useRouter();
const { data } = useGetGroupDetails({ groupId });
Expand Down Expand Up @@ -65,32 +65,29 @@ const EditMeetupPage = ({ params }: Props) => {

const res = await EditGroup(value);

replace(`/meetup/${res.id}`);
replace(`/Group/${res.id}`);
},
});

return (
<div>
<form>
<section className='px-4'>
<form.Field children={(field) => <MeetupTitleField field={field} />} name='title' />
<form.Field children={(field) => <MeetupLocationField field={field} />} name='location' />
<form.Field children={(field) => <MeetupDateField field={field} />} name='startTime' />
<form.Field children={(field) => <GroupTitleField field={field} />} name='title' />
<form.Field children={(field) => <GroupLocationField field={field} />} name='location' />
<form.Field children={(field) => <GroupDateField field={field} />} name='startTime' />
<form.Field
children={(field) => <MeetupCapField field={field} />}
children={(field) => <GroupCapField field={field} />}
name='maxParticipants'
/>
<form.Field children={(field) => <MeetupImagesField field={field} />} name='images' />
<form.Field
children={(field) => <MeetupDetailField field={field} />}
name='description'
/>
<form.Field children={(field) => <MeetupTagsField field={field} />} name='tags' />
<form.Field children={(field) => <GroupImagesField field={field} />} name='images' />
<form.Field children={(field) => <GroupDetailField field={field} />} name='description' />
<form.Field children={(field) => <GroupTagsField field={field} />} name='tags' />
</section>

<form.Subscribe
children={(state) => (
<MeetupSubmitButton
<GroupSubmitButton
state={state}
submitName='모임 수정'
onSubmitClick={() => form.handleSubmit()}
Expand All @@ -103,7 +100,7 @@ const EditMeetupPage = ({ params }: Props) => {
);
};

export default EditMeetupPage;
export default EditGroupPage;

const convertToDefaultImages = (images: GetGroupDetailsResponse['images']) => {
const defaultImages: PreUploadGroupImageResponse['images'] = [];
Expand Down
43 changes: 20 additions & 23 deletions src/app/post-meetup/page.tsx → src/app/create-group/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@ import { useRouter } from 'next/navigation';
import { useForm } from '@tanstack/react-form';

import {
MeetupCapField,
MeetupDateField,
MeetupDetailField,
MeetupImagesField,
MeetupLocationField,
MeetupSubmitButton,
MeetupTagsField,
MeetupTitleField,
} from '@/components/pages/post-meetup';
GroupCapField,
GroupDateField,
GroupDetailField,
GroupImagesField,
GroupLocationField,
GroupSubmitButton,
GroupTagsField,
GroupTitleField,
} from '@/components/pages/create-group';
import { useCreateGroup } from '@/hooks/use-group/use-group-create';
import { CreateGroupFormValues, createGroupSchema } from '@/lib/schema/group';

const PostMeetupPage = () => {
const CreateGroupPage = () => {
const { replace } = useRouter();
const { mutateAsync: createGroup } = useCreateGroup();

Expand All @@ -43,32 +43,29 @@ const PostMeetupPage = () => {

const res = await createGroup(value);

replace(`/meetup/${res.id}`);
replace(`/Group/${res.id}`);
},
});

return (
<div>
<form>
<section className='px-4'>
<form.Field children={(field) => <MeetupTitleField field={field} />} name='title' />
<form.Field children={(field) => <MeetupLocationField field={field} />} name='location' />
<form.Field children={(field) => <MeetupDateField field={field} />} name='startTime' />
<form.Field children={(field) => <GroupTitleField field={field} />} name='title' />
<form.Field children={(field) => <GroupLocationField field={field} />} name='location' />
<form.Field children={(field) => <GroupDateField field={field} />} name='startTime' />
<form.Field
children={(field) => <MeetupCapField field={field} />}
children={(field) => <GroupCapField field={field} />}
name='maxParticipants'
/>
<form.Field children={(field) => <MeetupImagesField field={field} />} name='images' />
<form.Field
children={(field) => <MeetupDetailField field={field} />}
name='description'
/>
<form.Field children={(field) => <MeetupTagsField field={field} />} name='tags' />
<form.Field children={(field) => <GroupImagesField field={field} />} name='images' />
<form.Field children={(field) => <GroupDetailField field={field} />} name='description' />
<form.Field children={(field) => <GroupTagsField field={field} />} name='tags' />
</section>

<form.Subscribe
children={(state) => (
<MeetupSubmitButton
<GroupSubmitButton
state={state}
submitName='모임 생성'
onSubmitClick={() => form.handleSubmit()}
Expand All @@ -81,4 +78,4 @@ const PostMeetupPage = () => {
);
};

export default PostMeetupPage;
export default CreateGroupPage;
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ interface Props {
field: AnyFieldApi;
}

export const MeetupCapField = ({ field }: Props) => {
export const GroupCapField = ({ field }: Props) => {
return (
<div className='mt-3 flex w-full flex-col gap-1'>
<Label htmlFor='post-meetup-cap' required>
<Label htmlFor='create-group-cap' required>
최대 인원
</Label>
<Input
id='post-meetup-cap'
id='create-group-cap'
className='bg-mono-white focus:border-mint-500 rounded-2xl border border-gray-300'
frontIcon={
<Icon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { AnyFieldApi } from '@tanstack/react-form';
import clsx from 'clsx';

import { Icon } from '@/components/icon';
import { DatePickerModal } from '@/components/pages/post-meetup/modals/date-picker-modal';
import { DatePickerModal } from '@/components/pages/create-group/modals/date-picker-modal';
import { Hint, Label } from '@/components/ui';
import { useModal } from '@/components/ui';
import { formatDateTime } from '@/lib/formatDateTime';
Expand All @@ -13,7 +13,7 @@ interface Props {
field: AnyFieldApi;
}

export const MeetupDateField = ({ field }: Props) => {
export const GroupDateField = ({ field }: Props) => {
const { open } = useModal();

const hasValue = Boolean(field.state.value);
Expand All @@ -26,7 +26,7 @@ export const MeetupDateField = ({ field }: Props) => {

return (
<div className='mt-6 flex w-full flex-col gap-1'>
<Label htmlFor='post-meetup-date' required onClick={onInputClick}>
<Label htmlFor='create-group-date' required onClick={onInputClick}>
모임 날짜
</Label>
<button
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ interface Props {
field: AnyFieldApi;
}

export const MeetupDetailField = ({ field }: Props) => {
export const GroupDetailField = ({ field }: Props) => {
const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid;

return (
<div className='mt-3 flex w-full flex-col gap-1'>
<Label htmlFor='post-meetup-Detail' required>
<Label htmlFor='create-group-Detail' required>
모임 상세 정보
</Label>
<textarea
id='post-meetup-Detail'
id='create-group-Detail'
className='bg-mono-white scrollbar-thin focus:border-mint-500 text-text-md-medium h-40 w-full resize-none rounded-2xl border border-gray-300 px-5 py-4 text-gray-800 focus:outline-none'
maxLength={300}
placeholder='모임에 대해 설명해주세요'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ interface Props {
field: AnyFieldApi;
}

export const MeetupImagesField = ({ field }: Props) => {
export const GroupImagesField = ({ field }: Props) => {
const { mutateAsync } = useUploadGroupImages();

const onUploadImage = async (e: React.ChangeEvent<HTMLInputElement>) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ import { AnyFieldApi } from '@tanstack/react-form';
import clsx from 'clsx';

import { Icon } from '@/components/icon';
import { LocationSearchModal } from '@/components/pages/post-meetup/modals/location-search-modal';
import { LocationSearchModal } from '@/components/pages/create-group/modals/location-search-modal';
import { Hint, Label } from '@/components/ui';
import { useModal } from '@/components/ui';

interface Props {
field: AnyFieldApi;
}

export const MeetupLocationField = ({ field }: Props) => {
export const GroupLocationField = ({ field }: Props) => {
const { open } = useModal();

const onInputClick = () => {
Expand All @@ -23,7 +23,7 @@ export const MeetupLocationField = ({ field }: Props) => {

return (
<div className='mt-3 flex w-full flex-col gap-1'>
<Label htmlFor='post-meetup-location' required onClick={onInputClick}>
<Label htmlFor='create-group-location' required onClick={onInputClick}>
모임 장소
</Label>
<button
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ interface Props {
field: AnyFieldApi;
}

export const MeetupTagsField = ({ field }: Props) => {
export const GroupTagsField = ({ field }: Props) => {
const inputRef = useRef<HTMLInputElement | null>(null);
const [inputValue, setInputValue] = useState('');

Expand All @@ -36,10 +36,10 @@ export const MeetupTagsField = ({ field }: Props) => {

return (
<div className='flex w-full flex-col gap-1'>
<Label htmlFor='post-meetup-tags'>태그</Label>
<Label htmlFor='create-group-tags'>태그</Label>
<Input
ref={inputRef}
id='post-meetup-tags'
id='create-group-tags'
className='bg-mono-white focus:border-mint-500 rounded-2xl border border-gray-300'
frontIcon={
<Icon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@ interface Props {
field: AnyFieldApi;
}

export const MeetupTitleField = ({ field }: Props) => {
export const GroupTitleField = ({ field }: Props) => {
const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid;

return (
<div className='mt-4 flex w-full flex-col gap-1'>
<Label htmlFor='post-meetup-title' required>
<Label htmlFor='create-group-title' required>
모임 제목
</Label>

<Input
id='post-meetup-title'
id='create-group-title'
className='bg-mono-white focus:border-mint-500 rounded-2xl border border-gray-300'
frontIcon={
<Icon
Expand Down
8 changes: 8 additions & 0 deletions src/components/pages/create-group/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export { GroupCapField } from './fields/cap-field';
export { GroupDateField } from './fields/date-field';
export { GroupDetailField } from './fields/detail-feild';
export { GroupImagesField } from './fields/images-field';
export { GroupLocationField } from './fields/location-field';
export { GroupTagsField } from './fields/tags-field';
export { GroupTitleField } from './fields/title-field';
export { GroupSubmitButton } from './post-button';
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import { useContextDays } from '@rehookify/datepicker';

import type { TimePickerState } from '@/components/pages/post-meetup/modals/date-picker-modal/calendar';
import type { TimePickerState } from '@/components/pages/create-group/modals/date-picker-modal/calendar';

interface Props {
currentTab: 'date' | 'time';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import { Activity, useEffect, useState } from 'react';

import { DatePickerStateProvider } from '@rehookify/datepicker';

import { CalendarFooter } from '@/components/pages/post-meetup/modals/date-picker-modal/calendar/calendar-footer';
import { DatePicker } from '@/components/pages/post-meetup/modals/date-picker-modal/calendar/date-picker';
import { TimePicker } from '@/components/pages/post-meetup/modals/date-picker-modal/calendar/time-picker';
import { CalendarFooter } from '@/components/pages/create-group/modals/date-picker-modal/calendar/calendar-footer';
import { DatePicker } from '@/components/pages/create-group/modals/date-picker-modal/calendar/date-picker';
import { TimePicker } from '@/components/pages/create-group/modals/date-picker-modal/calendar/time-picker';
import { AnimateDynamicHeight } from '@/components/shared';

interface Props {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import clsx from 'clsx';

import type { TimePickerState } from '@/components/pages/post-meetup/modals/date-picker-modal/calendar';
import type { TimePickerState } from '@/components/pages/create-group/modals/date-picker-modal/calendar';

interface Props {
selectedTime: TimePickerState;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { AnyFieldApi } from '@tanstack/react-form';
import clsx from 'clsx';

import { Icon } from '@/components/icon';
import { Calendar } from '@/components/pages/post-meetup/modals/date-picker-modal/calendar';
import { Calendar } from '@/components/pages/create-group/modals/date-picker-modal/calendar';
import { Button, ModalContent, ModalTitle, useModal } from '@/components/ui';

interface Props {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ interface Props {
onSubmitClick: () => void;
}

export const MeetupSubmitButton = ({ submitName, state, onSubmitClick }: Props) => {
export const GroupSubmitButton = ({ submitName, state, onSubmitClick }: Props) => {
const { canSubmit, isSubmitted, isPristine } = state;

const isSubmitDisabled = !canSubmit || isSubmitted || isPristine;
Expand Down
8 changes: 0 additions & 8 deletions src/components/pages/post-meetup/index.ts

This file was deleted.

Loading