Skip to content

[FIX] 북마크 토글 API 중복 호출 방지 #57

Description

@kbh0218

📝 기능 설명

링크 카드의 북마크 버튼을 빠르게 여러 번 누를 때 북마크 토글 API가 중복 호출되는 문제를 방지합니다.

현재 구조상 북마크 버튼을 누르면 toggleBookmark가 실행되고, 매번 PATCH /api/v1/saved-links/{id}/bookmark 요청이 바로 발생합니다.
사용자가 짧은 시간 안에 북마크 버튼을 여러 번 누르면 서버 상태와 화면 상태가 서로 어긋나거나, 불필요한 API 요청이 여러 번 발생할 수 있습니다.

북마크 토글은 홈 화면, 저장 링크 전체보기, 폴더 상세 화면에서 모두 사용되므로 동일한 기준으로 동작하도록 정리합니다.

📋 구현할 Task

  • 링크 카드 북마크 버튼을 누를 때마다 API 요청이 발생하는지 확인했는가?
  • context/saved-links-context.tsxtoggleBookmark 호출 흐름을 확인했는가?
  • PATCH /api/v1/saved-links/{id}/bookmark 요청이 연속 터치 시 여러 번 발생하는지 확인했는가?
  • 같은 링크에 대해 북마크 요청이 진행 중일 때 추가 요청이 발생하지 않도록 처리했는가?
  • 요청 중인 링크의 북마크 버튼을 비활성화하거나 터치를 무시하도록 처리했는가?
  • optimistic update 적용 시 실패 상황에서 기존 상태로 rollback 되는지 확인했는가?
  • 짧은 시간 반복 터치 시 서버와 화면의 최종 북마크 상태가 일치하는지 확인했는가?
  • toggle API 특성상 debounce 처리 시 사용자 의도와 서버 상태가 어긋나지 않는지 검토했는가?
  • 홈 화면의 최근 저장 링크 북마크 동작을 확인했는가?
  • 저장 링크 전체보기 화면의 북마크 동작을 확인했는가?
  • 폴더 상세 화면의 북마크 동작을 확인했는가?
  • 북마크 요청 실패 시 사용자에게 적절한 안내가 표시되는지 확인했는가?
  • Android 에뮬레이터에서 빠른 연속 터치 시 중복 API 요청이 발생하지 않는지 확인했는가?
  • 실제 휴대폰 preview 빌드에서 빠른 연속 터치 시 중복 API 요청이 발생하지 않는지 확인했는가?

📎 우선 확인 대상

  • 북마크 상태 관리

    • context/saved-links-context.tsx
    • api/saved-links.ts
  • 링크 카드

    • components/ui/card-link.tsx
  • 북마크 사용 화면

    • app/(tabs)/(home)/index.tsx
    • app/(tabs)/(home)/saved-links.tsx
    • app/(tabs)/(folder)/[id].tsx

📎 추가 내용

  • 이번 이슈에서는 북마크 토글 API의 중복 호출 방지를 우선 처리합니다.
  • 전체 버튼 중복 입력 방지는 별도 이슈에서 진행합니다.
  • 단순 debounce보다 “같은 링크 요청 중 재요청 방지” 방식이 현재 toggle API 구조에서는 더 안전한지 함께 검토합니다.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions