11import { useEffect , useState } from 'react' ;
22import TertiaryButton from '../../../../design-system/ui/buttons/TertiaryButton' ;
33import TextButton from '../../../../design-system/ui/buttons/TextButton' ;
4- import { readTicket } from '../../../features/ticket/api/ticket' ;
5- import { ReadTicket } from '../../../pages/dashboard/ui/ticket/TicketListPage' ;
64import { OrderTicketRequest } from '../../../features/ticket/model/OrderCreation' ;
75import { orderTickets } from '../../../features/ticket/api/order' ;
86import { useNavigate } from 'react-router-dom' ;
7+ import { useTickets } from '../../../features/ticket/hooks/useTicketHook' ;
98
109const TicketInfo = ( { eventId } : { eventId : number } ) => {
1110 const limitNum = 4 ;
12- const [ tickets , setTickets ] = useState < ReadTicket [ ] > ( [ ] ) ;
11+ const { data , isError , isLoading } = useTickets ( eventId ) ;
1312 const [ quantity , setQuantity ] = useState < { [ key : number ] : number } > ( { } ) ;
1413 const navigate = useNavigate ( ) ;
15-
16- useEffect ( ( ) => {
17- const fetchTickets = async ( ) => {
18- try {
19- const data = await readTicket . getAll ( eventId ) ;
20- if ( data . isSuccess && Array . isArray ( data . result ) ) {
21- setTickets ( data . result ) ;
22- } else {
23- setTickets ( [ ] ) ;
24- }
25- } catch ( error ) {
26- console . error ( "티켓 데이터를 불러오는 중 오류 발생:" , error ) ;
27- setTickets ( [ ] ) ;
28- }
29- } ;
30- fetchTickets ( ) ;
31- } , [ eventId ] ) ;
3214 useEffect ( ( ) => {
33- if ( tickets . length > 0 ) {
15+ if ( data && data . isSuccess ) {
3416 const initialQuantity : { [ key : number ] : number } = { } ;
35- tickets . forEach ( ticket => {
17+ data . result . forEach ( ticket => {
3618 initialQuantity [ ticket . ticketId ] = 1 ;
3719 } ) ;
3820 setQuantity ( initialQuantity ) ;
3921 }
40- } , [ tickets ] ) ;
22+ } , [ data ] ) ;
23+
4124 const handleIncrement = ( ticketId : number ) => {
4225 setQuantity ( prev => ( {
4326 ...prev ,
@@ -60,28 +43,29 @@ const TicketInfo = ({ eventId }: { eventId: number }) => {
6043 eventId,
6144 ticketCnt,
6245 } ;
63-
46+
6447 const response = await orderTickets ( requestData ) ;
65-
48+
6649 console . log ( "API 응답:" , response ) ;
67-
50+
6851 if ( response . isSuccess && Array . isArray ( response . result ) ) {
6952 const orderIds = response . result ;
70-
53+
7154 navigate ( '/payment/ticket-confirm' , { state : { orderIds, ticketId, eventId } } ) ;
7255 } else {
7356 alert ( "주문 정보를 불러올 수 없습니다." ) ;
7457 }
75-
58+
7659 } catch ( error ) {
7760 alert ( "티켓 구매 중 오류가 발생했습니다." ) ;
7861 }
7962 } ;
80-
63+ if ( isLoading ) return < div > Loading...</ div > ;
64+ if ( isError || ! data || ! data . isSuccess ) return < div > 티켓 정보를 불러올 수 없습니다.</ div > ;
8165
8266 return (
8367 < div className = "w-full h-full" >
84- { tickets . map ( ticket => (
68+ { data . result . map ( ticket => (
8569 < div key = { ticket . ticketId } className = "bg-gray1 px-3 py-3 md:px-6 md:py-4 rounded-[10px] mb-3" >
8670 < div className = "flex justify-between items-center" >
8771 < div className = "flex flex-col gap-2" >
0 commit comments