diff --git a/src/features/host/hook/useHostInfoHook.ts b/src/features/host/hook/useHostInfoHook.ts
index 98dab3ce..4e3d6e43 100644
--- a/src/features/host/hook/useHostInfoHook.ts
+++ b/src/features/host/hook/useHostInfoHook.ts
@@ -5,6 +5,7 @@ import { HostChannelInfoResponse } from '../../../entities/host/model/hostChanne
export const useHostInfoSave = (
hostChannelId: number,
hostInfo: HostChannelInfoResponse,
+ email: string,
channelDescription: string
) => {
const queryClient = useQueryClient();
@@ -17,7 +18,7 @@ export const useHostInfoSave = (
hostChannelId,
profileImageUrl: hostInfo.result.profileImageUrl,
hostChannelName: hostInfo.result.hostChannelName,
- hostEmail: hostInfo.result.email,
+ hostEmail: email,
channelDescription,
};
diff --git a/src/features/ticket/model/ticketInformation.ts b/src/features/ticket/model/ticketInformation.ts
index 6fa2153e..4dded4b0 100644
--- a/src/features/ticket/model/ticketInformation.ts
+++ b/src/features/ticket/model/ticketInformation.ts
@@ -17,6 +17,8 @@ export interface ReadTicketResponse {
ticketDescription: string;
ticketPrice: number;
availableQuantity: number;
+ startDate: string;
+ endDate: string;
}
export interface TicketOptionChoice {
diff --git a/src/pages/event/ui/host/HostCreationPage.tsx b/src/pages/event/ui/host/HostCreationPage.tsx
index 22285d0d..cb308e49 100644
--- a/src/pages/event/ui/host/HostCreationPage.tsx
+++ b/src/pages/event/ui/host/HostCreationPage.tsx
@@ -1,4 +1,3 @@
-import basicProfile from '../../../../../public/assets/event-manage/creation/BasicProfile.png';
import addImage from '../../../../../public/assets/event-manage/creation/AddImage.svg';
import DefaultTextField from '../../../../../design-system/ui/textFields/DefaultTextField';
import MultilineTextField from '../../../../../design-system/ui/textFields/MultilineTextField';
@@ -57,14 +56,21 @@ const HostCreationPage = ({ onValidationChange }: HostCreationPageProps) => {
}));
}, [hostChannelName, hostEmail, channelDescription, setHostState]);
+ useEffect(() => {
+ return () => {
+ setHostState({
+ profileImageUrl: '',
+ hostChannelName: '',
+ hostEmail: '',
+ channelDescription: '',
+ });
+ };
+ }, [setHostState]);
+
return (
-

+
- {selectedHost && (
-
-
-
대표 이메일
-
{hostInfo?.result.email}
-
-
-
멤버 목록
-
- {hostInfo?.result.hostChannelMembers.map(user => (
-
- {user.memberName}
-
- ))}
-
-
-
- )}
+ {selectedHost &&
}
{selectedInfo && (
-
-
-
- setChannelDescription(e.target.value)}
- className="h-24 mb-8"
- />
-
-
-
-
-
멤버 등록
-
- 이메일로 회원을 검색해 추가 할 수 있습니다. 삭제 하려면 추가된 이메일 아이콘의 x를 눌러주세요.{' '}
-
-
-
-
-
-
+ <>
+
+
+ >
)}
diff --git a/src/shared/hooks/useImageUpload.ts b/src/shared/hooks/useImageUpload.ts
index 5345b386..d615d721 100644
--- a/src/shared/hooks/useImageUpload.ts
+++ b/src/shared/hooks/useImageUpload.ts
@@ -1,7 +1,7 @@
import { useRef, useState, useCallback, useEffect } from 'react';
import { uploadFile } from '../../features/event/hooks/usePresignedUrlHook';
import { convertImageToWebP } from '../lib/convertImageToWebP';
-export const DEFAULT_BASIC_PROFILE = 'https://gotogetherbucket.s3.ap-northeast-2.amazonaws.com/default.png';
+import basicProfile from '../../../public/assets/event-manage/creation/BasicProfile.png';
const useImageUpload = ({
value,
@@ -19,9 +19,9 @@ const useImageUpload = ({
useEffect(() => {
if (value) {
setPreviewUrl(value);
- } else if (useDefaultImage && previewUrl !== DEFAULT_BASIC_PROFILE) {
- setPreviewUrl(DEFAULT_BASIC_PROFILE);
- onSuccess?.(DEFAULT_BASIC_PROFILE);
+ } else if (useDefaultImage && previewUrl !== basicProfile) {
+ setPreviewUrl(basicProfile);
+ onSuccess?.(basicProfile);
}
}, [value, onSuccess, useDefaultImage, previewUrl]);
diff --git a/src/shared/lib/formValidation.ts b/src/shared/lib/formValidation.ts
index 100b88f5..869d1df6 100644
--- a/src/shared/lib/formValidation.ts
+++ b/src/shared/lib/formValidation.ts
@@ -9,7 +9,7 @@ export const formSchema = z.object({
.regex(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/, '올바른 이메일 형식이어야 합니다.'),
phone: z
.string()
- .regex(/^[0-9]{3}-[0-9]{3,4}-[0-9]{4}$/, '연락처는 휴대전화 번호 형식(예: 010-1234-5678)이어야 합니다.')
+ .regex(/^[0-9]{3}-[0-9]{3,4}-[0-9]{4}$/, '연락처는 휴대전화 번호 형식(예: 010-1234-5678)이어야 합니다.'),
});
export const organizerFormSchema = formSchema.pick({ email: true, phone: true });
export const eventTitleSchema = z.object({
@@ -21,6 +21,7 @@ export const hostCreationSchema = z.object({
channelDescription: z.string().min(5, '채널 설명은 최소 두 글자 이상이어야 합니다.'),
});
export const myPageSchema = formSchema.pick({ name: true, phone: true });
+export const hostInfoSchema = formSchema.pick({ email: true });
export type FormData = z.infer
;
export type OrganizerFormData = z.infer;
diff --git a/src/widgets/event/ui/TicketInfo.tsx b/src/widgets/event/ui/TicketInfo.tsx
index 7791207f..a12d86ae 100644
--- a/src/widgets/event/ui/TicketInfo.tsx
+++ b/src/widgets/event/ui/TicketInfo.tsx
@@ -6,6 +6,7 @@ import { useTickets } from '../../../features/ticket/hooks/useTicketHook';
import { useOrderTicket } from '../../../features/ticket/hooks/useOrderHook';
import { readTicketOptions } from '../../../features/ticket/api/ticketOption';
import useAuthStore from '../../../app/provider/authStore';
+import clock from '../../../../public/assets/event-manage/details/Clock.svg';
const TicketInfo = ({ eventId }: { eventId: number }) => {
const limitNum = 4;
@@ -84,7 +85,9 @@ const TicketInfo = ({ eventId }: { eventId: number }) => {
{data.result.map(ticket => (
-
{/* w-[230px] */}
+
+ {' '}
+ {/* w-[230px] */}
{ticket.ticketName} {/* w-[170px] */}
@@ -123,6 +126,15 @@ const TicketInfo = ({ eventId }: { eventId: number }) => {
/>
+
+
+

+
+ 구매 가능기간: {new Date(ticket.startDate).toLocaleDateString()} ~{' '}
+ {new Date(ticket.endDate).toLocaleDateString()}
+
+
+
))}