Skip to content

게스트 부를 곡이 로그인하면 사라지는 문제 #317

Description

@GulSam00

문제

로그아웃 상태에서 담은 부를 곡이 로그인하는 순간 목록에서 사라진다.

useToSingSongQuery(isAuthenticated, guestToSingSongs)isAuthenticated로 queryKey와 queryFn을 통째로 갈아타, 로그인하면 서버 응답만 반환한다. 게스트 목록은 localStorage(guest_to_sing)에 그대로 남아 있지만 화면에서 보이지 않는다. clearGuestToSingSongs는 어디에서도 호출되지 않는다 — 병합 코드가 애초에 없다.

데이터 자체는 지워지지 않으므로, 병합을 붙이면 과거에 목록을 잃었던 사용자도 같은 기기에서 자동 복구된다.

해결 방향

카카오 로그인은 /api/auth/callback에서 서버 리다이렉트로 끝나 전체 페이지가 다시 뜬다. 클라이언트에 "로그인 성공" 시점이 없으므로 전환을 감지하는 대신 불변식을 지킨다 — 로그인 상태에서는 게스트 목록이 비어 있어야 한다.

작업 체크리스트

  • POST /api/songs/tosing/merge 신설 — 실재하는 곡만, 이미 담긴 곡은 건너뛰고, 기존 목록 뒤에 append
  • useMergeGuestToSing 훅 — 성공했을 때만 로컬을 비워 실패 시 다음 방문에 재시도
  • AuthProvider에서 호출
  • 실데이터 QA (카카오 로그인이라 자동 검증 불가)

참고

기존 /api/songs/tosing/array를 재사용하지 않는 이유: 중복 검사가 없어 이미 담긴 곡과 겹치면 배치 insert 전체가 깨지거나 목록에 같은 곡이 두 번 뜬다. 삭제된 곡 id가 섞이면 FK 위반으로 역시 배치가 깨지고, 그러면 로컬이 비워지지 않아 방문할 때마다 재시도가 반복된다.

Supabase에서 tosings(user_id, song_id) 유니크 제약 여부 확인 필요 — 현재 중복 방지가 애플리케이션 레이어에만 있다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions