@@ -11,6 +11,7 @@ import { getMeetingUserId } from '@/lib/storage';
1111import { useQueryClient } from '@tanstack/react-query' ;
1212import Loading from '@/components/loading/loading' ;
1313import { getRandomHexColor } from '@/lib/color' ;
14+ import { sendGAEvent } from '@next/third-parties/google' ;
1415
1516export default function Page ( ) {
1617 const queryClient = useQueryClient ( ) ;
@@ -159,6 +160,26 @@ export default function Page() {
159160 router . replace ( `/meeting/${ id } ` ) ;
160161 } ;
161162
163+ const handleResultShareClick = ( e : React . MouseEvent < HTMLButtonElement > ) => {
164+ // 1. GA 데이터 먼저 전송!
165+ if ( typeof window !== 'undefined' ) {
166+ let browserId = localStorage . getItem ( 'browser_id' ) ;
167+ if ( ! browserId ) {
168+ browserId = `bid_${ Math . random ( ) . toString ( 36 ) . substring ( 2 , 15 ) } ${ Date . now ( ) . toString ( 36 ) } ` ;
169+ localStorage . setItem ( 'browser_id' , browserId ) ;
170+ }
171+
172+ sendGAEvent ( 'event' , 'share_link' , {
173+ meeting_url_id : id ,
174+ location : 'place_list' , // PM님 명세: 결과 리스트 페이지
175+ browser_id : browserId ,
176+ } ) ;
177+ }
178+
179+ // 2. 안전하게 전송 후 모달 띄우기
180+ openModal ( 'SHARE' , { meetingId : id } , e ) ;
181+ } ;
182+
162183 useEffect ( ( ) => {
163184 clearRelatedCache ( ) ;
164185
@@ -266,7 +287,7 @@ export default function Page() {
266287 < div
267288 key = { result . id }
268289 onClick = { ( ) => setSelectedResultId ( result . id ) }
269- className = { `flex cursor-pointer flex-col gap-3.75 rounded-[4px] border bg-white p-5 ${
290+ className = { `flex cursor-pointer flex-col gap-3.75 rounded border bg-white p-5 ${
270291 selectedResultId === result . id
271292 ? 'border-blue-5 border-2'
272293 : 'border-gray-2 hover:bg-gray-1'
@@ -296,7 +317,7 @@ export default function Page() {
296317 < div className = "flex gap-2" >
297318 < button
298319 onClick = { handleRecommendClick }
299- className = "bg-gray-8 hover:bg-gray-9 h-10 flex-1 cursor-pointer rounded-[4px] text-[15px] font-normal text-white transition-colors"
320+ className = "bg-gray-8 hover:bg-gray-9 h-10 flex-1 cursor-pointer rounded text-[15px] font-normal text-white transition-colors"
300321 type = "button"
301322 >
302323 주변 장소 추천
@@ -314,7 +335,7 @@ export default function Page() {
314335 e
315336 ) ;
316337 } }
317- className = "bg-gray-1 hover:bg-gray-2 text-blue-5 h-10 flex-1 cursor-pointer rounded-[4px] text-[15px] font-normal transition-colors"
338+ className = "bg-gray-1 hover:bg-gray-2 text-blue-5 h-10 flex-1 cursor-pointer rounded text-[15px] font-normal transition-colors"
318339 type = "button"
319340 >
320341 환승 경로 보기
@@ -328,7 +349,7 @@ export default function Page() {
328349 </ div >
329350
330351 < button
331- onClick = { ( e ) => openModal ( 'SHARE' , { meetingId : id } , e ) }
352+ onClick = { handleResultShareClick }
332353 className = "bg-blue-5 hover:bg-blue-8 absolute right-5 bottom-0 left-5 flex h-12 items-center justify-center gap-2.5 rounded text-lg font-semibold text-white transition-transform active:scale-[0.98] md:right-0 md:left-0"
333354 >
334355 < Image src = "/icon/share-white.svg" alt = "공유 아이콘" width = { 20 } height = { 20 } />
0 commit comments