Skip to content

apiClient 코드 중복 제거 및 네이티브 브릿지 인증 동기화 중앙화#244

Merged
ff1451 merged 3 commits intodevelopfrom
243-refactor-apiClient-네이티브-브릿지-인증-개선
Mar 30, 2026

Hidden character warning

The head ref may contain hidden characters: "243-refactor-apiClient-\ub124\uc774\ud2f0\ube0c-\ube0c\ub9bf\uc9c0-\uc778\uc99d-\uac1c\uc120"
Merged

apiClient 코드 중복 제거 및 네이티브 브릿지 인증 동기화 중앙화#244
ff1451 merged 3 commits intodevelopfrom
243-refactor-apiClient-네이티브-브릿지-인증-개선

Conversation

@ff1451
Copy link
Copy Markdown
Collaborator

@ff1451 ff1451 commented Mar 30, 2026

✨ 요약

  • sendRequest / sendRequestWithoutRetry 중복 함수를 allowRetry 파라미터로 통합하고, 공통 로직을 buildUrl, buildFetchOptions, executeFetch로 분리
  • client.ts의 모듈 스코프 refreshPromise 제거 (auth/index.ts의 dedup에 위임)
  • postNativeMessage 유틸을 추출하여 모든 네이티브 브릿지 호출(TOKEN_REFRESH, LOGIN_COMPLETE, LOGOUT)을 타입 안전하게 중앙화
  • clearAuth() 내부에서 LOGOUT 브릿지 전송 → 회원탈퇴, 알림 스트림 등 모든 인증 해제 경로에서 네이티브 동기화 보장
  • initialize() refresh 실패 경로도 clearAuth() 경유하도록 통일
  • parseResponse JSON 파싱 실패 시 ApiError 형태로 래핑 (status, statusText, url 포함), 204 No Content 명시 처리

😎 해결한 이슈

close #243

Summary by CodeRabbit

릴리스 노트

  • 버그 수정

    • API 응답 파싱 실패 시 오류 처리 개선
  • 리팩토링

    • 인증 토큰 갱신 메커니즘 최적화로 성능 향상
    • API 요청 생성 및 실행 프로세스 개선
    • 인증 요청 재시도 로직 정교화
    • 네이티브 애플리케이션 간 메시지 통신 표준화

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 30, 2026

Warning

Rate limit exceeded

@ff1451 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 29 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 9 minutes and 29 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ea19b547-0bce-4ba3-b747-35cfc162ba6b

📥 Commits

Reviewing files that changed from the base of the PR and between c8a5cfc and 7ab1637.

📒 Files selected for processing (1)
  • src/apis/client.ts

Walkthrough

apiClient의 인증 로직을 리팩토링하고 네이티브 브릿지 메시지 전송을 통합했습니다. sendRequestallowRetry 파라미터를 추가하여 sendRequestWithoutRetry 제거, 요청 구성 로직을 buildUrl, buildFetchOptions, executeFetch 헬퍼로 분리했습니다. refreshPromise 캐싱을 제거하고, parseResponse에서 JSON 파싱 실패 시 ApiError를 throw하도록 개선했습니다. nativeBridge.ts의 새로운 postNativeMessage 유틸로 TOKEN_REFRESH, LOGIN_COMPLETE, LOGOUT 메시지 전송을 중앙화했습니다.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 주요 변경사항(apiClient 중복 제거, 네이티브 브릿지 중앙화)을 명확하게 요약하고 있습니다.
Linked Issues check ✅ Passed 코드 변경사항이 #243의 모든 핵심 목표(sendRequest 통합, refreshPromise 제거, postNativeMessage 중앙화, clearAuth 내 LOGOUT 동기화, parseResponse 에러 처리)를 충족합니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 #243의 정의된 범위 내에 있으며, 명시된 리팩토링 목표에 직접 관련되어 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 243-refactor-apiClient-네이티브-브릿지-인증-개선

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/apis/client.ts`:
- Around line 146-173: The request body handling currently JSON.stringifys
everything except Blob and FormData, which wrongly serializes other valid
BodyInit types (URLSearchParams, ArrayBuffer, TypedArray, DataView, etc.);
update the guard around JSON.stringify (the block setting fetchOpts.body and the
earlier isJsonBody/header logic) to only stringify plain objects and arrays
(e.g., Array.isArray(body) || (typeof body === 'object' && body !== null &&
body.constructor === Object)), and explicitly exclude Blob, FormData,
URLSearchParams, ArrayBuffer, ArrayBuffer views (ArrayBuffer.isView), and
DataView so URLSearchParams, ArrayBuffer/typed arrays, DataView, Blob, and
FormData are passed through unchanged while plain objects/arrays are
JSON.stringified. Ensure the Content-Type header (isJsonBody/h) aligns with this
narrower check.

In `@src/stores/authStore.ts`:
- Around line 90-91: The current clearAuth() always sends the native LOGOUT
bridge event, but it's being used for transient refresh failures as well; change
clearAuth() so it only clears in-memory/state tokens and does NOT send the
bridge event, and create a separate explicit method (e.g.,
sendNativeLogoutBridge() or clearAuthAndNotify()) that both clears auth and
sends the LOGOUT bridge; update callers that represent transient failures (those
in client refresh failure paths and useInboxNotificationStream) to call the
plain clearAuth() (no bridge) while explicit user actions (logout/unregister
flows) call the new combined method to send the bridge.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9eeb0fde-30d5-40f5-bc8d-cef6d943d290

📥 Commits

Reviewing files that changed from the base of the PR and between 78e1960 and c8a5cfc.

📒 Files selected for processing (5)
  • src/apis/client.ts
  • src/components/notification/hooks/useInboxNotificationStream.ts
  • src/pages/User/MyPage/hooks/useLogout.ts
  • src/stores/authStore.ts
  • src/utils/ts/nativeBridge.ts
💤 Files with no reviewable changes (1)
  • src/pages/User/MyPage/hooks/useLogout.ts

Comment thread src/apis/client.ts Outdated
Comment thread src/stores/authStore.ts
Comment on lines 90 to +91
} catch {
set({ user: null, accessToken: null, authStatus: 'anonymous' });
get().clearAuth();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

clearAuth()가 일시적 refresh 실패까지 네이티브 로그아웃으로 확장됩니다.

이제 초기화 실패도 clearAuth()를 타고, clearAuth()는 항상 LOGOUT을 전송합니다. 그런데 이 메서드는 src/apis/client.tssrc/components/notification/hooks/useInboxNotificationStream.ts의 refresh 실패 경로에서도 호출되므로, 네트워크/5xx 같은 일시적 실패까지 네이티브 로그아웃으로 처리될 수 있습니다. 명시적 로그아웃/회원탈퇴에서만 브릿지를 보내도록 분리하는 편이 안전합니다.

Also applies to: 114-118

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/stores/authStore.ts` around lines 90 - 91, The current clearAuth() always
sends the native LOGOUT bridge event, but it's being used for transient refresh
failures as well; change clearAuth() so it only clears in-memory/state tokens
and does NOT send the bridge event, and create a separate explicit method (e.g.,
sendNativeLogoutBridge() or clearAuthAndNotify()) that both clears auth and
sends the LOGOUT bridge; update callers that represent transient failures (those
in client refresh failure paths and useInboxNotificationStream) to call the
plain clearAuth() (no bridge) while explicit user actions (logout/unregister
flows) call the new combined method to send the bridge.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

apiClient의 중복 로직을 정리하고, WebView ↔ 네이티브 브릿지 인증 동기화를 postNativeMessage/clearAuth() 중심으로 중앙화하여 인증 상태 불일치를 줄이려는 PR입니다.

Changes:

  • sendRequest/sendRequestWithoutRetryallowRetry 파라미터 기반으로 통합하고 URL/옵션/실행 로직을 함수로 분리
  • 네이티브 브릿지 메시지 전송을 postNativeMessage 유틸로 추출하고 호출 지점을 통일
  • clearAuth()에서 LOGOUT 브릿지 전송 및 parseResponse의 JSON 파싱 실패 처리 개선(204 처리 포함)

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/utils/ts/nativeBridge.ts 타입 안전한 postNativeMessage 유틸 추가
src/stores/authStore.ts 인증 실패 경로를 clearAuth()로 통일하고 LOGOUT 브릿지 동기화 보장
src/pages/User/MyPage/hooks/useLogout.ts 개별 LOGOUT 브릿지 호출 제거(스토어 clearAuth()에 위임)
src/components/notification/hooks/useInboxNotificationStream.ts TOKEN_REFRESH 브릿지 호출을 postNativeMessage로 중앙화
src/apis/client.ts 요청/재시도/응답 파싱 리팩터링 및 TOKEN_REFRESH 브릿지 동기화 추가

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/apis/client.ts Outdated
@ff1451
Copy link
Copy Markdown
Collaborator Author

ff1451 commented Mar 30, 2026

@CodeRabbit review

@ff1451 ff1451 merged commit f9dfaed into develop Mar 30, 2026
2 checks passed
ff1451 added a commit that referenced this pull request Apr 1, 2026
* 205 feat 이미지 전처리 기능 구현 (#206)

* feat: 전처리 로직 및 WebWorker 구현

* feat: 전처리 적용 및 preview 동시성 제어 로직 추가

* refactor: 리뷰 반영

* [hotfix] 하단바 너비 수정 (#208)

* hotfix: 하단바 너비 수정

* chore: 불필요한 값 제거

* refactor: 고정 gap 제거

* Reapply "[feat] 광고 배너 추가 (#200)"

This reverts commit c51ec85.

* [feat] 하단바 리디자인 (#213)

* chore: asset 추가

* feat: 하단바 리디자인 반영 및 레이아웃 수정

* [refactor] 광고 카드 레이아웃 밀림 수정 (#215)

* refactor: 광고 개수 측정 시기 변경 및 기본값 제거

* feat: 스켈레톤 UI 추가

* feat: 인앱 알림 페이지 및 토스트 구현 (#217)

* feat: 알림 API 및 스트림 기반 추가

* feat: 인앱 알림 레이어 추가

* feat: 알림 페이지 및 헤더 진입 구현

* fix: 알림 스트림 401 재시도 조건 정리

* fix: 알림 목록 이동 차단 제거

* refactor: 알림 공용 훅 위치 정리

* fix: 알림 재연결 캐시 동기화 추가

* fix: 알림 목록 토스트 큐 누적 방지

* fix: 알림 읽음 카운트 감소 조건 보강

* [refactor] 도메인별 TanStack Query 훅 정리 (#219)

* chore: pwa용 이미지 제거

* refactor: auth 도메인 쿼리와 뮤테이션 정리

* refactor: council과 schedule 조회 훅 정리

* refactor: chat과 notification 캐시 처리 정리

* refactor: club 조회와 지원 플로우 정리

* refactor: manager 도메인 캐시 처리 정리

* refactor: studyTime 도메인 쿼리와 뮤테이션 정리

* refactor: 광고와 업로드 도메인 훅 정리

* [refactor] mutaton query 및 hook 추가 수정 (#221)

* refactor: auth와 user myInfo 훅 정리

* refactor: club과 schedule 조회 훅 정리

* refactor: chat과 notification 훅 구조 정리

* refactor: club 지원 뮤테이션 훅 정리

* refactor: manager 뮤테이션 훅 구조 정리

* refactor: mutation 훅 cache 정리

* refactor: 컨벤션 통일

* refactor: isRead 조건 정리

* fix: 채팅 스크롤 문제 수정

* refactor: 불필요한 코드 제거

* [fix] 모바일 환경 입력창과 키보드 간의 간격이 큰 문제 수정 (#223)

* chore: 가공용 safeArea 변수 선언

* refactor: 고정 패딩 값 수정 및 safeArea 적용 변경

* feat: 키보드 활성화 감지 및 safeArea 적용 여부 기능 추가

* refactor: 매직넘버 상수화 및 가로모드 처리

* [fix] 키보드 활성화 시 화면 흔들림 문제 수정 (#225)

* refactor: 채팅 viewport 훅 네이밍 정리

* refactor: viewport 높이 잠금 훅 적용 시점 조정

* [fix] 키보드 활성화 시 채팅 화면 전체가 흔들리는 문제 수정 (#227)

* refactor: 채팅 viewport 훅 네이밍 정리

* refactor: viewport 높이 잠금 훅 적용 시점 조정

* fix: 채팅 화면 스크롤 잠금으로 키보드 흔들림 완화

* fix: 입력 포커스 중 viewport offset 고정 (#229)

* fix: 문서 루트 스크롤 잠금으로 빈 공간 잔류 방지 (#232)

* [fix] 키보드 활성화 시 채팅 화면 상단 고정이 깨지고 빈 공간이 남는 문제 수정 (#234)

* fix: 채팅 화면 상단 고정 깨짐과 빈 공간 잔류 수정

* refactor: 라우트 조건 수정

* fix: 문서 스크롤 위치 감지 보강

* refactor: 입력 요소 판별 유틸과 스크롤 주석 정리

* [fix] 키보드 활성화 시 채팅 화면에서 문서 스크롤이 발생하는 문제 수정 (#236)

* fix: 채팅 문서 스크롤 제스처 차단

* fix: 입력 요소 터치 동작 예외 처리

* [fix] 키보드 활성화 시 채팅방이 마지막 메시지 위치를 유지하지 못하는 문제 수정 (#238)

* fix: 키보드 활성화 시 채팅 하단 정렬 유지

* refactor: 채팅 리사이즈 관찰 안정화

* fix: mypage 연계 약관 페이지 뒤로가기 수정 (#240)

* refactor: alias import 경로 정리

* fix: query 설정과 suspense 분기 정리

* refactor: 관리자 화면 스타일 유틸 정리

* fix: 이미지 전처리 예외 처리 보강

* fix: 헤더와 회비 화면 동작 정리

* fix: 공통 유틸 안정성 개선

* fix: 이미지 전처리 실패 처리를 보정

* fix: 모집 공고 저장 후 설정 반영 순서 조정

* fix: 부원 직책 변경 실패 처리를 보강

* fix: 약관 링크 접근성을 개선

* fix: 공통 쿼리와 유틸 안정성을 보완

* [feat] 동적 버전 정보 표시 구현 (#211)

* feat: 동적 버전 정보 표시 구현

* refactor: 버전 정보 미 존재시 v 표시 제거

* [feat] 메인화면 동아리 카드 디자인 수정 반영 (#242)

* feat: 메인화면 동아리 카드 디자인 수정

* chore: 하단바 아이콘 수정

* refactor: 코드래빗 리뷰 반영

* refactor: and 연산자로 변경

* apiClient 코드 중복 제거 및 네이티브 브릿지 인증 동기화 중앙화 (#244)

* refactor: apiClient 코드 중복 제거 및 네이티브 브릿지 인증 동기화 중앙화

* refactor: body 직렬화 가드를 plain object/array로 한정

* fix: body 읽기 중 AbortError가 ParseError로 오분류되는 문제 수정

* [refactor] 에러 처리 유틸 및 utils 구조 정리 (#246)

* refactor: 에러 처리 유틸 및 공통 토스트 흐름 정리

* refactor: utils 폴더 구조를 역할별로 정리

* refactor: 코드래빗 리뷰 반영

* refactor: 코드래빗 리뷰 반영

* Update src/pages/Home/components/HomeClubSection.tsx

* fix: 인증 세션 복구 흐름 정리

* fix: 홈 동아리 카드 레이아웃 정리

* [feat] 총동아리 페이지 리디자인 및 하단 오버레이 정리 (#249)

* refactor: 하단 오버레이 처리 공통화

* feat: 총동아리 페이지와 헤더 리디자인 반영

* fix: 채팅 하단 여백과 외부 링크 속성 수정

* refactor: 총동아리 헤더 설정 정리

* fix: 총동아리 상세 접근성과 스타일 보완

* [feat] 마이페이지 관리자 카드 분리 및 채팅 미확인 배지 반영 (#251)

* feat: 하단 채팅 배지 표시 및 조회 조건 보완

* refactor: 관리자 정보 카드 컴포넌트 분리

* feat: 채팅 페이지 리디자인 (#252)

* feat: 채팅 페이지 리디자인

* fix:tailwind 문법 수정

* fix: 코드 수정

* fix: 폰트 색상 및 위치 수정

* fix: 채팅방 사람수 정렬

* fix: 오타 수정

* chore: conflict 해결 중 누락된 부분 수정

* [refactor] 광고 렌더링 조건 수정 (#254)

* refactor: 광고 렌더링 조건 수정

* docs: 문서명 변경

---------

Co-authored-by: 박성주 <145267904+ParkSungju01@users.noreply.github.com>
@ff1451 ff1451 self-assigned this Apr 7, 2026
@ff1451 ff1451 deleted the 243-refactor-apiClient-네이티브-브릿지-인증-개선 branch April 7, 2026 09:32
ff1451 added a commit that referenced this pull request Apr 21, 2026
* [배포] 이미지 전처리, 광고 기능, 하단바 리디자인, 인앱 알림 페이지 및 토스트 프로덕션 배포 (#230)

* 205 feat 이미지 전처리 기능 구현 (#206)

* feat: 전처리 로직 및 WebWorker 구현

* feat: 전처리 적용 및 preview 동시성 제어 로직 추가

* refactor: 리뷰 반영

* [hotfix] 하단바 너비 수정 (#208)

* hotfix: 하단바 너비 수정

* chore: 불필요한 값 제거

* refactor: 고정 gap 제거

* Reapply "[feat] 광고 배너 추가 (#200)"

This reverts commit c51ec85.

* [feat] 하단바 리디자인 (#213)

* chore: asset 추가

* feat: 하단바 리디자인 반영 및 레이아웃 수정

* [refactor] 광고 카드 레이아웃 밀림 수정 (#215)

* refactor: 광고 개수 측정 시기 변경 및 기본값 제거

* feat: 스켈레톤 UI 추가

* feat: 인앱 알림 페이지 및 토스트 구현 (#217)

* feat: 알림 API 및 스트림 기반 추가

* feat: 인앱 알림 레이어 추가

* feat: 알림 페이지 및 헤더 진입 구현

* fix: 알림 스트림 401 재시도 조건 정리

* fix: 알림 목록 이동 차단 제거

* refactor: 알림 공용 훅 위치 정리

* fix: 알림 재연결 캐시 동기화 추가

* fix: 알림 목록 토스트 큐 누적 방지

* fix: 알림 읽음 카운트 감소 조건 보강

* [refactor] 도메인별 TanStack Query 훅 정리 (#219)

* chore: pwa용 이미지 제거

* refactor: auth 도메인 쿼리와 뮤테이션 정리

* refactor: council과 schedule 조회 훅 정리

* refactor: chat과 notification 캐시 처리 정리

* refactor: club 조회와 지원 플로우 정리

* refactor: manager 도메인 캐시 처리 정리

* refactor: studyTime 도메인 쿼리와 뮤테이션 정리

* refactor: 광고와 업로드 도메인 훅 정리

* [refactor] mutaton query 및 hook 추가 수정 (#221)

* refactor: auth와 user myInfo 훅 정리

* refactor: club과 schedule 조회 훅 정리

* refactor: chat과 notification 훅 구조 정리

* refactor: club 지원 뮤테이션 훅 정리

* refactor: manager 뮤테이션 훅 구조 정리

* refactor: mutation 훅 cache 정리

* refactor: 컨벤션 통일

* refactor: isRead 조건 정리

* fix: 채팅 스크롤 문제 수정

* refactor: 불필요한 코드 제거

* [fix] 모바일 환경 입력창과 키보드 간의 간격이 큰 문제 수정 (#223)

* chore: 가공용 safeArea 변수 선언

* refactor: 고정 패딩 값 수정 및 safeArea 적용 변경

* feat: 키보드 활성화 감지 및 safeArea 적용 여부 기능 추가

* refactor: 매직넘버 상수화 및 가로모드 처리

* [fix] 키보드 활성화 시 화면 흔들림 문제 수정 (#225)

* refactor: 채팅 viewport 훅 네이밍 정리

* refactor: viewport 높이 잠금 훅 적용 시점 조정

* [fix] 키보드 활성화 시 채팅 화면 전체가 흔들리는 문제 수정 (#227)

* refactor: 채팅 viewport 훅 네이밍 정리

* refactor: viewport 높이 잠금 훅 적용 시점 조정

* fix: 채팅 화면 스크롤 잠금으로 키보드 흔들림 완화

* fix: 입력 포커스 중 viewport offset 고정 (#229)

* fix: 문서 루트 스크롤 잠금으로 빈 공간 잔류 방지 (#232)

* [fix] 키보드 활성화 시 채팅 화면 상단 고정이 깨지고 빈 공간이 남는 문제 수정 (#234)

* fix: 채팅 화면 상단 고정 깨짐과 빈 공간 잔류 수정

* refactor: 라우트 조건 수정

* fix: 문서 스크롤 위치 감지 보강

* refactor: 입력 요소 판별 유틸과 스크롤 주석 정리

* [fix] 키보드 활성화 시 채팅 화면에서 문서 스크롤이 발생하는 문제 수정 (#236)

* fix: 채팅 문서 스크롤 제스처 차단

* fix: 입력 요소 터치 동작 예외 처리

* [fix] 키보드 활성화 시 채팅방이 마지막 메시지 위치를 유지하지 못하는 문제 수정 (#238)

* fix: 키보드 활성화 시 채팅 하단 정렬 유지

* refactor: 채팅 리사이즈 관찰 안정화

* fix: mypage 연계 약관 페이지 뒤로가기 수정 (#240)

* refactor: alias import 경로 정리

* fix: query 설정과 suspense 분기 정리

* refactor: 관리자 화면 스타일 유틸 정리

* fix: 이미지 전처리 예외 처리 보강

* fix: 헤더와 회비 화면 동작 정리

* fix: 공통 유틸 안정성 개선

* fix: 이미지 전처리 실패 처리를 보정

* fix: 모집 공고 저장 후 설정 반영 순서 조정

* fix: 부원 직책 변경 실패 처리를 보강

* fix: 약관 링크 접근성을 개선

* fix: 공통 쿼리와 유틸 안정성을 보완

* [feat] 동적 버전 정보 표시 구현 (#211)

* feat: 동적 버전 정보 표시 구현

* refactor: 버전 정보 미 존재시 v 표시 제거

* [feat] 메인화면 동아리 카드 디자인 수정 반영 (#242)

* feat: 메인화면 동아리 카드 디자인 수정

* chore: 하단바 아이콘 수정

* refactor: 코드래빗 리뷰 반영

* refactor: and 연산자로 변경

* apiClient 코드 중복 제거 및 네이티브 브릿지 인증 동기화 중앙화 (#244)

* refactor: apiClient 코드 중복 제거 및 네이티브 브릿지 인증 동기화 중앙화

* refactor: body 직렬화 가드를 plain object/array로 한정

* fix: body 읽기 중 AbortError가 ParseError로 오분류되는 문제 수정

* [refactor] 에러 처리 유틸 및 utils 구조 정리 (#246)

* refactor: 에러 처리 유틸 및 공통 토스트 흐름 정리

* refactor: utils 폴더 구조를 역할별로 정리

* refactor: 코드래빗 리뷰 반영

* refactor: 코드래빗 리뷰 반영

* Update src/pages/Home/components/HomeClubSection.tsx

* fix: 인증 세션 복구 흐름 정리

* fix: 홈 동아리 카드 레이아웃 정리

* [feat] 총동아리 페이지 리디자인 및 하단 오버레이 정리 (#249)

* refactor: 하단 오버레이 처리 공통화

* feat: 총동아리 페이지와 헤더 리디자인 반영

* fix: 채팅 하단 여백과 외부 링크 속성 수정

* refactor: 총동아리 헤더 설정 정리

* fix: 총동아리 상세 접근성과 스타일 보완

* [feat] 마이페이지 관리자 카드 분리 및 채팅 미확인 배지 반영 (#251)

* feat: 하단 채팅 배지 표시 및 조회 조건 보완

* refactor: 관리자 정보 카드 컴포넌트 분리

* feat: 채팅 페이지 리디자인 (#252)

* feat: 채팅 페이지 리디자인

* fix:tailwind 문법 수정

* fix: 코드 수정

* fix: 폰트 색상 및 위치 수정

* fix: 채팅방 사람수 정렬

* fix: 오타 수정

* chore: conflict 해결 중 누락된 부분 수정

* [refactor] 광고 렌더링 조건 수정 (#254)

* refactor: 광고 렌더링 조건 수정

* docs: 문서명 변경

---------

Co-authored-by: 박성주 <145267904+ParkSungju01@users.noreply.github.com>

* refactor: 가이드 페이지 이미지 변경 및 구조 개선 (#260)

* hotfix: 가이드 이미지 경로 변경

---------

Co-authored-by: 박성주 <145267904+ParkSungju01@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[refactor] apiClient 및 네이티브 브릿지 인증 연동 개선

2 participants