fix: SSE 의 refresh 가 별도 경로로 호출되어 race 발생하던 문제 수정#274
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No description provided. |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
Walkthrough기존에 Changes클라이언트 토큰 갱신 단일 진입점 리팩터링
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
* feat: 위시 단일 삭제 시 삭제 성공 토스트 추가 * refactor: layout 권한 확인 시 fetchQuery 활용하여 다중 호출되지 않도록 방지 * feat: getMe 404인 경우 login 페이지로 redirect * chore: 아카이브 페이지 props 네이밍 변경 * refactor: prefetch, getQueryState 대신 fetchQuery로 권한 검증 로직 단순화 * style: 토너먼트 담기 화면 레이아웃 및 UI 개선 (#259) * style: layout.tsx에서 불필요한 padding 제거 * style: 참여자 프로필 그룹 z-index 순서 수정 * style: 장바구니와 상태 라벨 사이 여백 조정 * style: 캐러셀 슬라이드 크기 비율 85%에서 90%로 변경 * feat: 토너먼트 헤더에서 뒤로가기 버튼 클릭 시 홈으로 이동하도록 수정 * feat: 장바구니 아이템 수 증가 시 알림 토스트 추가 * feat: 위시 상품 삭제 토스트 추가 및 복구 필드명 수정 (#263) * fix: 위시 복구 요청 폼 필드명 수정 (price → currentPrice) * feat: 위시 삭제 시 성공 토스트 메시지 추가 * fix: 애플 로그인 시 비회원으로 로그인되는 문제 수정 (#242) * fix: Apple OAuth POST 콜백을 올바른 핸들러로 rewrite하는 미들웨어 추가 * fix: Apple OAuth POST 콜백을 proxy.ts에서 올바른 핸들러로 rewrite * fix: 로그인 상태에서 /login 접근 시 /home으로 리다이렉트 * fix: Apple OAuth POST 콜백 rewrite를 307 redirect로 변경 * fix: Apple 콜백 route.ts 디버그 로그 추가 * fix: Apple 콜백 실패 시 에러 정보를 URL 파라미터로 전달 * fix: Apple 콜백 성공 시 307 대신 302로 리다이렉트하여 POST 루프 방지 * fix: Apple 콜백 쿠키 SameSite=Strict → Lax로 변경하여 cross-site 리다이렉트 후 인증 유지 * chore: Apple 콜백 디버그 코드 제거 * fix: 탈퇴 후 무한루프 유발하는 /login → /home 리다이렉트 제거 * fix: 애플 콜백 쿠키 SameSite 변환 코드 제거 (서버에서 Lax로 일괄 변경) * refactor: 애플 콜백 처리 BE 이관으로 FE route.ts 및 proxy Apple POST 감지 코드 제거 * fix: 애플 로그인 redirectUri를 BE 콜백 URL로 변경 * fix: Apple getAuthUrl 호출 시 redirectUri 파라미터 제거 (BE 브릿지 URL 사용) * fix: no-undefined lint 에러 수정 * fix: Apple redirectUri URL 조합 안전하게 수정 * fix: 토너먼트 준비 화면 실시간 아이템 상태 미반영 버그 수정 (#264) * feat: tournament-item-parsed SSE 이벤트 처리 추가 * feat: 토너먼트 아이템 삭제 시 참여자 화면 실시간 갱신 처리 추가 * chore: 토너먼트 조회 30초 폴링 제거 (SSE로 대체) * style: 홈 토너먼트 목록 및 프로필 이미지 개선 (#265) * feat: 홈에서 담는중, 플레이 상태인 토너먼트 카드만 보여주도록 수정 * refactor: UserProfileGroup에서 게스트 프로필 이미지 그대로 사용하도록 수정 * feat: Tournament Card 제목 클릭 시 토너먼트 준비/진행/결과 페이지로 이동 * fix: 화면 리사이즈 시 웹 스플래시 로고 한쪽으로 치우치는 오류 수정 * fix: QA 통합 — 토너먼트 시작 흐름 모달 / 영수증 캡처 / 초대 마감 보정 (#236) (#243) * fix: 영수증 캡처 시 S3 이미지 CORS 차단 회피 (cacheBust false + force-cache) * fix: 플레이 체험 게스트(CLONE)는 결과 페이지에서 전체 결과 보기 카드 숨김 * fix: 서버 ISO UTC 응답을 Z 떼지 않고 그대로 파싱 (만료됨 오표시 해결) * fix: 초대 마감 시각 picker 가 ISO 8601 UTC 형식으로 전송하도록 변경 * fix: 휠 picker remount 방지 (key 에서 inviteExpiresAt 제거) * chore: consolelog 삭제 * fix: 초대 마감 시 토너먼트 시작 버튼 비활성 처리 * fix: 영수증 캡처 시 상품 사진 누락 (next/image proxy URL 로 same-origin 우회) * feat: 토너먼트 시작 전 부전승 안내 모달 추가 (2의 거듭제곱 아닌 경우) * feat: 담기 시간 종료 시 주최자에게 자동 안내 모달 노출 * feat: 주최자 시작 SSE 신호 감지 → 참여자에게 자동 안내 모달 노출 * refactor: ConfirmStartDialog / ConfirmExitDialog 의 raw button → 공통 Button 컴포넌트 교체 * chore: format * fix: react-hooks/set-state-in-effect lint 에러 해결 (이전 값 state 패턴으로 변경) * style: not-found 페이지 Link 의 cursor-pointer 제거 및 canonical class 정리 * fix: 휠 picker 드래그 직후 click 이벤트가 잘못된 점프를 일으키던 문제 수정 * fix: 모달 시작 버튼 중복 mutation 호출 방지 (isPending 가드 + disabled) * style: 위시에서 가져오기 CTA 영역 그라데이션 디자인 반영 (#245) * style: 위시에서 가져오기 CTA 영역 그라데이션 디자인 반영 * style: 토너먼트 로딩 브라켓 아이콘 그림자 box-shadow로 변경 * style: 하단 바텀 내비 그라디언트 레이어 추가 (#247) * style: 하단 바텀 내비 그라디언트 레이어 추가 * fix: 바텀 내비 그라디언트 포털 SSR 오류 수정 및 lint 에러 해결 * style: 토너먼트 준비 페이지 상태 라벨 주최자·참여자 디자인 통일 (#251) * fix: 화면 확대 시 장바구니 크기 미복구 버그 수정 (#252) * fix: 장바구니 8개 가득 찬 상태에서 아이템 삭제 시 장바구니 사라짐 버그 수정 (#254) * fix: SSE 알림 구독 토큰 만료 시 재연결 처리 (#255) * fix: SSE 알림 구독 토큰 만료 시 재연결 처리 * fix: SSE refresh 하드코딩 URL 상수로 교체 및 웹뷰 토큰 저장 누락 수정 * feat: 위시·토너먼트 아이템 수정 기능 개선 (#256) * feat: 위시 Pending 상태일 때도 클릭 안 되도록 변경 * feat: item status Completed 인 경우에도 클릭 가능하도록 변경 * feat: item status Completed인 경우에 링크 갱신하는 drawer 추가 * feat: 위시, 토너먼트 아이템 Pending 상태일 때도 클릭 안 되도록 변경 * chore: 위시, 토너먼트 아이템 수정 문구 변경 * feat: 위시, 토너먼트 아이템 status = Ready인 경우 이미지 수정 불가능하도록 설정 * feat: 토너먼트 아이템 수정 기능 추가 * style: 토너먼트 아이템 수정 페이지 bg color 고정 * style: 토너먼트 아이템 수정 페이지 bg color 고정 * style: 위시 수정 페이지 스타일 변경 * feat: 링크로 토너먼트 등록 시 에러 토스트 추가 * feat: 토너먼트 아이템 수정 모든 필드 required로 변경 * feat: 위시 수정 모든 필드 required로 변경 * feat: 등록 성공한 위시 갱신 api 연결 * feat: 링크로 위시 등록 시 에러 토스트 추가 * chore: 불필요한 파일 제거 * fix: 토너먼트 아이템에 친구 프로필 얼굴 추가하도록 변경 * fix: 토너먼트 후보 Patch 누락된 에러 핸들링 추가 * refactor: 위시 수정 시 다른 액션 실행되지 않도록 설정 * style: 토너먼트 담기 화면 레이아웃 및 UI 개선 (#259) * style: layout.tsx에서 불필요한 padding 제거 * style: 참여자 프로필 그룹 z-index 순서 수정 * style: 장바구니와 상태 라벨 사이 여백 조정 * style: 캐러셀 슬라이드 크기 비율 85%에서 90%로 변경 * feat: 토너먼트 헤더에서 뒤로가기 버튼 클릭 시 홈으로 이동하도록 수정 * feat: 장바구니 아이템 수 증가 시 알림 토스트 추가 * feat: 위시 상품 삭제 토스트 추가 및 복구 필드명 수정 (#263) * fix: 위시 복구 요청 폼 필드명 수정 (price → currentPrice) * feat: 위시 삭제 시 성공 토스트 메시지 추가 * fix: 애플 로그인 시 비회원으로 로그인되는 문제 수정 (#242) * fix: Apple OAuth POST 콜백을 올바른 핸들러로 rewrite하는 미들웨어 추가 * fix: Apple OAuth POST 콜백을 proxy.ts에서 올바른 핸들러로 rewrite * fix: 로그인 상태에서 /login 접근 시 /home으로 리다이렉트 * fix: Apple OAuth POST 콜백 rewrite를 307 redirect로 변경 * fix: Apple 콜백 route.ts 디버그 로그 추가 * fix: Apple 콜백 실패 시 에러 정보를 URL 파라미터로 전달 * fix: Apple 콜백 성공 시 307 대신 302로 리다이렉트하여 POST 루프 방지 * fix: Apple 콜백 쿠키 SameSite=Strict → Lax로 변경하여 cross-site 리다이렉트 후 인증 유지 * chore: Apple 콜백 디버그 코드 제거 * fix: 탈퇴 후 무한루프 유발하는 /login → /home 리다이렉트 제거 * fix: 애플 콜백 쿠키 SameSite 변환 코드 제거 (서버에서 Lax로 일괄 변경) * refactor: 애플 콜백 처리 BE 이관으로 FE route.ts 및 proxy Apple POST 감지 코드 제거 * fix: 애플 로그인 redirectUri를 BE 콜백 URL로 변경 * fix: Apple getAuthUrl 호출 시 redirectUri 파라미터 제거 (BE 브릿지 URL 사용) * fix: no-undefined lint 에러 수정 * fix: Apple redirectUri URL 조합 안전하게 수정 * fix: 토너먼트 준비 화면 실시간 아이템 상태 미반영 버그 수정 (#264) * feat: tournament-item-parsed SSE 이벤트 처리 추가 * feat: 토너먼트 아이템 삭제 시 참여자 화면 실시간 갱신 처리 추가 * chore: 토너먼트 조회 30초 폴링 제거 (SSE로 대체) * chore: 게스트 프로필 dice bear 처리 삭제 --------- Co-authored-by: 조영찬 <tigerbone@naver.com> Co-authored-by: Soyeong Park <mb535622@gmail.com> Co-authored-by: kanghaeun <145974230+kanghaeun@users.noreply.github.com> * feat: Firebase Analytics 연동 (앱 사용자 행동 분석) (#258) * feat: Firebase Analytics (GA4) 연동 + 핵심 9개 이벤트 로깅 * feat: GA4 web stream 추가 (@next/third-parties) + 환경별 분기 로직 * fix: TOURNAMENT_COMPLETE 이벤트가 tournamentId 변경을 추적하도록 의존성 보강 * fix: firebase 패키지 버전 불일치로 인한 런타임 에러 가능성 제거 * feat: GA4 funnel 이벤트 보강 + iOS Analytics 빌드 fix (#268) * fix: app.json 에 @react-native-firebase/analytics 플러그인 + forceStaticLinking 추가 * feat: GA4 이벤트 시안 기준 보강 (wish_add_start, social_invite_click, guest_visit 추가 + 이벤트명 정리) * fix: 영수증 화면 상품 사진 미표시 및 긴 상품명 넘침 수정 (#271) * fix: 영수증 상품 사진 미표시 수정 (_next/image 허용 width 사용) * fix: 영수증 상품명 줄바꿈처리 * feat: 담기 마감 동작 개선 (협업 의도 판정 + 이어서 담기) (#272) * feat: 담기 마감 모달에 '이어서 담기' 버튼 추가 * feat: 초대 보냈거나 친구 합류한 토너먼트만 담기 타이머 노출 * fix: refresh_token 동시 호출로 인한 자동 로그아웃 수정 (rotation 대응 dedupe) (#273) * fix: SSE 의 refresh 가 별도 경로로 호출되어 race 발생하던 문제 수정 (#274) * refactor: 홈 페이지 단위 await 제거 후 tournamentList 범위에만 await 설정 * refactor: WishCard 이미지 로딩 시 Skeleton 사용 * fix: BaseImage loading -> success로 전환되는 시점에 아무것도 뜨지 않는 현상 해결 * refactor: Archive 페이지 초기 페이지 진입 속도 개선 * refactor: UserProfile image 로딩 시 skeleton 적용 * chore: fix import error * chore: 불필요한 eas 파일 삭제 * perf: wishcard 이미지 preload 최적화 및 LCP 지표 개선 * refactor: queryClient 캐싱 추가 * refactor: Button Spinner dynamic import 로 변경 * refactor: query client 캐시 스코프 변경 * chore: 아카이브/위시 - main 태그 하나만 사용하도록 변경 * fix: 아카이브, 마이페이지 처리되지 않은 에러는 throw되도록 처리 * chore: 위시 삭제 토스트 중복 제거 * refactor: 위시 수정 - layout으로 페이지 진입 권한 확인 분리 * fix: 토너먼트 Pick 뱃지 이미지보다 뒤에 뜨는 현상 제거 * fix: 토너먼트 준비 페이지 헤더 center text 잘림 현상 해결 * fix: 등록 실패한 위시도 삭제 가능하도록 버튼 추가 * fix: 앱 KeyboardAvoidingView 제거 * fix: 프로필 이미지 zindex 수정 * chore: 아카이브 페이지 main 태그 한개로 유지 * chore: 불필요한 403 에러 처리 삭제 * style: TournamentCard 텍스트 줄바꿈되는 경우 대응 * refactor: 위시 저장/삭제/수정 동시에 일어날 수 없도록 disabled 처리 --------- Co-authored-by: kanghaeun <145974230+kanghaeun@users.noreply.github.com> Co-authored-by: Soyeong Park <mb535622@gmail.com> Co-authored-by: 조영찬 <tigerbone@naver.com>
* feat: 위시 단일 삭제 시 삭제 성공 토스트 추가 * refactor: layout 권한 확인 시 fetchQuery 활용하여 다중 호출되지 않도록 방지 * feat: getMe 404인 경우 login 페이지로 redirect * chore: 아카이브 페이지 props 네이밍 변경 * refactor: prefetch, getQueryState 대신 fetchQuery로 권한 검증 로직 단순화 * style: 토너먼트 담기 화면 레이아웃 및 UI 개선 (#259) * style: layout.tsx에서 불필요한 padding 제거 * style: 참여자 프로필 그룹 z-index 순서 수정 * style: 장바구니와 상태 라벨 사이 여백 조정 * style: 캐러셀 슬라이드 크기 비율 85%에서 90%로 변경 * feat: 토너먼트 헤더에서 뒤로가기 버튼 클릭 시 홈으로 이동하도록 수정 * feat: 장바구니 아이템 수 증가 시 알림 토스트 추가 * feat: 위시 상품 삭제 토스트 추가 및 복구 필드명 수정 (#263) * fix: 위시 복구 요청 폼 필드명 수정 (price → currentPrice) * feat: 위시 삭제 시 성공 토스트 메시지 추가 * fix: 애플 로그인 시 비회원으로 로그인되는 문제 수정 (#242) * fix: Apple OAuth POST 콜백을 올바른 핸들러로 rewrite하는 미들웨어 추가 * fix: Apple OAuth POST 콜백을 proxy.ts에서 올바른 핸들러로 rewrite * fix: 로그인 상태에서 /login 접근 시 /home으로 리다이렉트 * fix: Apple OAuth POST 콜백 rewrite를 307 redirect로 변경 * fix: Apple 콜백 route.ts 디버그 로그 추가 * fix: Apple 콜백 실패 시 에러 정보를 URL 파라미터로 전달 * fix: Apple 콜백 성공 시 307 대신 302로 리다이렉트하여 POST 루프 방지 * fix: Apple 콜백 쿠키 SameSite=Strict → Lax로 변경하여 cross-site 리다이렉트 후 인증 유지 * chore: Apple 콜백 디버그 코드 제거 * fix: 탈퇴 후 무한루프 유발하는 /login → /home 리다이렉트 제거 * fix: 애플 콜백 쿠키 SameSite 변환 코드 제거 (서버에서 Lax로 일괄 변경) * refactor: 애플 콜백 처리 BE 이관으로 FE route.ts 및 proxy Apple POST 감지 코드 제거 * fix: 애플 로그인 redirectUri를 BE 콜백 URL로 변경 * fix: Apple getAuthUrl 호출 시 redirectUri 파라미터 제거 (BE 브릿지 URL 사용) * fix: no-undefined lint 에러 수정 * fix: Apple redirectUri URL 조합 안전하게 수정 * fix: 토너먼트 준비 화면 실시간 아이템 상태 미반영 버그 수정 (#264) * feat: tournament-item-parsed SSE 이벤트 처리 추가 * feat: 토너먼트 아이템 삭제 시 참여자 화면 실시간 갱신 처리 추가 * chore: 토너먼트 조회 30초 폴링 제거 (SSE로 대체) * style: 홈 토너먼트 목록 및 프로필 이미지 개선 (#265) * feat: 홈에서 담는중, 플레이 상태인 토너먼트 카드만 보여주도록 수정 * refactor: UserProfileGroup에서 게스트 프로필 이미지 그대로 사용하도록 수정 * feat: Tournament Card 제목 클릭 시 토너먼트 준비/진행/결과 페이지로 이동 * fix: 화면 리사이즈 시 웹 스플래시 로고 한쪽으로 치우치는 오류 수정 * fix: QA 통합 — 토너먼트 시작 흐름 모달 / 영수증 캡처 / 초대 마감 보정 (#236) (#243) * fix: 영수증 캡처 시 S3 이미지 CORS 차단 회피 (cacheBust false + force-cache) * fix: 플레이 체험 게스트(CLONE)는 결과 페이지에서 전체 결과 보기 카드 숨김 * fix: 서버 ISO UTC 응답을 Z 떼지 않고 그대로 파싱 (만료됨 오표시 해결) * fix: 초대 마감 시각 picker 가 ISO 8601 UTC 형식으로 전송하도록 변경 * fix: 휠 picker remount 방지 (key 에서 inviteExpiresAt 제거) * chore: consolelog 삭제 * fix: 초대 마감 시 토너먼트 시작 버튼 비활성 처리 * fix: 영수증 캡처 시 상품 사진 누락 (next/image proxy URL 로 same-origin 우회) * feat: 토너먼트 시작 전 부전승 안내 모달 추가 (2의 거듭제곱 아닌 경우) * feat: 담기 시간 종료 시 주최자에게 자동 안내 모달 노출 * feat: 주최자 시작 SSE 신호 감지 → 참여자에게 자동 안내 모달 노출 * refactor: ConfirmStartDialog / ConfirmExitDialog 의 raw button → 공통 Button 컴포넌트 교체 * chore: format * fix: react-hooks/set-state-in-effect lint 에러 해결 (이전 값 state 패턴으로 변경) * style: not-found 페이지 Link 의 cursor-pointer 제거 및 canonical class 정리 * fix: 휠 picker 드래그 직후 click 이벤트가 잘못된 점프를 일으키던 문제 수정 * fix: 모달 시작 버튼 중복 mutation 호출 방지 (isPending 가드 + disabled) * style: 위시에서 가져오기 CTA 영역 그라데이션 디자인 반영 (#245) * style: 위시에서 가져오기 CTA 영역 그라데이션 디자인 반영 * style: 토너먼트 로딩 브라켓 아이콘 그림자 box-shadow로 변경 * style: 하단 바텀 내비 그라디언트 레이어 추가 (#247) * style: 하단 바텀 내비 그라디언트 레이어 추가 * fix: 바텀 내비 그라디언트 포털 SSR 오류 수정 및 lint 에러 해결 * style: 토너먼트 준비 페이지 상태 라벨 주최자·참여자 디자인 통일 (#251) * fix: 화면 확대 시 장바구니 크기 미복구 버그 수정 (#252) * fix: 장바구니 8개 가득 찬 상태에서 아이템 삭제 시 장바구니 사라짐 버그 수정 (#254) * fix: SSE 알림 구독 토큰 만료 시 재연결 처리 (#255) * fix: SSE 알림 구독 토큰 만료 시 재연결 처리 * fix: SSE refresh 하드코딩 URL 상수로 교체 및 웹뷰 토큰 저장 누락 수정 * feat: 위시·토너먼트 아이템 수정 기능 개선 (#256) * feat: 위시 Pending 상태일 때도 클릭 안 되도록 변경 * feat: item status Completed 인 경우에도 클릭 가능하도록 변경 * feat: item status Completed인 경우에 링크 갱신하는 drawer 추가 * feat: 위시, 토너먼트 아이템 Pending 상태일 때도 클릭 안 되도록 변경 * chore: 위시, 토너먼트 아이템 수정 문구 변경 * feat: 위시, 토너먼트 아이템 status = Ready인 경우 이미지 수정 불가능하도록 설정 * feat: 토너먼트 아이템 수정 기능 추가 * style: 토너먼트 아이템 수정 페이지 bg color 고정 * style: 토너먼트 아이템 수정 페이지 bg color 고정 * style: 위시 수정 페이지 스타일 변경 * feat: 링크로 토너먼트 등록 시 에러 토스트 추가 * feat: 토너먼트 아이템 수정 모든 필드 required로 변경 * feat: 위시 수정 모든 필드 required로 변경 * feat: 등록 성공한 위시 갱신 api 연결 * feat: 링크로 위시 등록 시 에러 토스트 추가 * chore: 불필요한 파일 제거 * fix: 토너먼트 아이템에 친구 프로필 얼굴 추가하도록 변경 * fix: 토너먼트 후보 Patch 누락된 에러 핸들링 추가 * refactor: 위시 수정 시 다른 액션 실행되지 않도록 설정 * style: 토너먼트 담기 화면 레이아웃 및 UI 개선 (#259) * style: layout.tsx에서 불필요한 padding 제거 * style: 참여자 프로필 그룹 z-index 순서 수정 * style: 장바구니와 상태 라벨 사이 여백 조정 * style: 캐러셀 슬라이드 크기 비율 85%에서 90%로 변경 * feat: 토너먼트 헤더에서 뒤로가기 버튼 클릭 시 홈으로 이동하도록 수정 * feat: 장바구니 아이템 수 증가 시 알림 토스트 추가 * feat: 위시 상품 삭제 토스트 추가 및 복구 필드명 수정 (#263) * fix: 위시 복구 요청 폼 필드명 수정 (price → currentPrice) * feat: 위시 삭제 시 성공 토스트 메시지 추가 * fix: 애플 로그인 시 비회원으로 로그인되는 문제 수정 (#242) * fix: Apple OAuth POST 콜백을 올바른 핸들러로 rewrite하는 미들웨어 추가 * fix: Apple OAuth POST 콜백을 proxy.ts에서 올바른 핸들러로 rewrite * fix: 로그인 상태에서 /login 접근 시 /home으로 리다이렉트 * fix: Apple OAuth POST 콜백 rewrite를 307 redirect로 변경 * fix: Apple 콜백 route.ts 디버그 로그 추가 * fix: Apple 콜백 실패 시 에러 정보를 URL 파라미터로 전달 * fix: Apple 콜백 성공 시 307 대신 302로 리다이렉트하여 POST 루프 방지 * fix: Apple 콜백 쿠키 SameSite=Strict → Lax로 변경하여 cross-site 리다이렉트 후 인증 유지 * chore: Apple 콜백 디버그 코드 제거 * fix: 탈퇴 후 무한루프 유발하는 /login → /home 리다이렉트 제거 * fix: 애플 콜백 쿠키 SameSite 변환 코드 제거 (서버에서 Lax로 일괄 변경) * refactor: 애플 콜백 처리 BE 이관으로 FE route.ts 및 proxy Apple POST 감지 코드 제거 * fix: 애플 로그인 redirectUri를 BE 콜백 URL로 변경 * fix: Apple getAuthUrl 호출 시 redirectUri 파라미터 제거 (BE 브릿지 URL 사용) * fix: no-undefined lint 에러 수정 * fix: Apple redirectUri URL 조합 안전하게 수정 * fix: 토너먼트 준비 화면 실시간 아이템 상태 미반영 버그 수정 (#264) * feat: tournament-item-parsed SSE 이벤트 처리 추가 * feat: 토너먼트 아이템 삭제 시 참여자 화면 실시간 갱신 처리 추가 * chore: 토너먼트 조회 30초 폴링 제거 (SSE로 대체) * chore: 게스트 프로필 dice bear 처리 삭제 --------- Co-authored-by: 조영찬 <tigerbone@naver.com> Co-authored-by: Soyeong Park <mb535622@gmail.com> Co-authored-by: kanghaeun <145974230+kanghaeun@users.noreply.github.com> * feat: Firebase Analytics 연동 (앱 사용자 행동 분석) (#258) * feat: Firebase Analytics (GA4) 연동 + 핵심 9개 이벤트 로깅 * feat: GA4 web stream 추가 (@next/third-parties) + 환경별 분기 로직 * fix: TOURNAMENT_COMPLETE 이벤트가 tournamentId 변경을 추적하도록 의존성 보강 * fix: firebase 패키지 버전 불일치로 인한 런타임 에러 가능성 제거 * feat: GA4 funnel 이벤트 보강 + iOS Analytics 빌드 fix (#268) * fix: app.json 에 @react-native-firebase/analytics 플러그인 + forceStaticLinking 추가 * feat: GA4 이벤트 시안 기준 보강 (wish_add_start, social_invite_click, guest_visit 추가 + 이벤트명 정리) * fix: 영수증 화면 상품 사진 미표시 및 긴 상품명 넘침 수정 (#271) * fix: 영수증 상품 사진 미표시 수정 (_next/image 허용 width 사용) * fix: 영수증 상품명 줄바꿈처리 * feat: 담기 마감 동작 개선 (협업 의도 판정 + 이어서 담기) (#272) * feat: 담기 마감 모달에 '이어서 담기' 버튼 추가 * feat: 초대 보냈거나 친구 합류한 토너먼트만 담기 타이머 노출 * fix: refresh_token 동시 호출로 인한 자동 로그아웃 수정 (rotation 대응 dedupe) (#273) * fix: SSE 의 refresh 가 별도 경로로 호출되어 race 발생하던 문제 수정 (#274) * refactor: 홈 페이지 단위 await 제거 후 tournamentList 범위에만 await 설정 * refactor: WishCard 이미지 로딩 시 Skeleton 사용 * fix: BaseImage loading -> success로 전환되는 시점에 아무것도 뜨지 않는 현상 해결 * refactor: Archive 페이지 초기 페이지 진입 속도 개선 * refactor: UserProfile image 로딩 시 skeleton 적용 * chore: fix import error * chore: 불필요한 eas 파일 삭제 * perf: wishcard 이미지 preload 최적화 및 LCP 지표 개선 * refactor: queryClient 캐싱 추가 * refactor: Button Spinner dynamic import 로 변경 * refactor: query client 캐시 스코프 변경 * chore: 아카이브/위시 - main 태그 하나만 사용하도록 변경 * fix: 아카이브, 마이페이지 처리되지 않은 에러는 throw되도록 처리 * chore: 위시 삭제 토스트 중복 제거 * refactor: 위시 수정 - layout으로 페이지 진입 권한 확인 분리 * fix: 토너먼트 Pick 뱃지 이미지보다 뒤에 뜨는 현상 제거 * fix: 토너먼트 준비 페이지 헤더 center text 잘림 현상 해결 * fix: 등록 실패한 위시도 삭제 가능하도록 버튼 추가 * fix: 앱 KeyboardAvoidingView 제거 * fix: 프로필 이미지 zindex 수정 * chore: 아카이브 페이지 main 태그 한개로 유지 * chore: 불필요한 403 에러 처리 삭제 * style: TournamentCard 텍스트 줄바꿈되는 경우 대응 * refactor: 위시 저장/삭제/수정 동시에 일어날 수 없도록 disabled 처리 --------- Co-authored-by: kanghaeun <145974230+kanghaeun@users.noreply.github.com> Co-authored-by: Soyeong Park <mb535622@gmail.com> Co-authored-by: 조영찬 <tigerbone@naver.com>
작업 내용
SSE 가 자체적으로
/auth/token/refresh를 직접 호출하면서 axios interceptor 와 dedupe 되지 않아, 토큰 갱신이 동시 다발로 발생해 백엔드가 401/500 으로 거부하던 문제를 수정.원인
useNotificationSSE가fetch(ENDPOINTS.AUTH_TOKEN_REFRESH, ...)로 직접 호출isRefreshing큐와 분리 → 동시 다발 raceX-Client-Type헤더 누락, Content-Type 분기도 누락해결
utils/refreshClientToken.ts신규 — Promise 기반 dedupe 가 들어간 클라 측 공유 함수apis/client.ts와hooks/useNotificationSSE.ts둘 다 이 함수만 호출하도록 통합X-Client-Type/ 웹뷰 토큰 setCookie) 일원화효과
검증
pnpm check-types·pnpm lint통과Summary by CodeRabbit
릴리스 노트