사이드프로젝트 slecs

소셜 로그인 토큰 갱신 무한 루프와 인앱 파일 미리보기 개선

목차

하루치 메모

이번 작업은 네 가지 잡탕 묶음. 미리보기 모달, 뒤로가기 동작, 커스텀 북마크, 소셜 로그인 개선. 하나하나는 작은데 합쳐 놓으니 앱 진입점부터 네이티브 매니페스트까지 다 건드림.

작업한 것

항목 핵심 변경
미리보기 모달 첨부 파일을 외부 앱 대신 인앱에서 띄움
뒤로가기 모달 떠 있을 때 시스템 백버튼으로 닫힘
커스텀 북마크 자주 쓰는 페이지 핀 가능
소셜 로그인 토큰 만료 무한 루프 케이스 수정

미리보기 모달

원래는 파일 다운로드 후 OS 기본 뷰어가 뜸. 사용자가 다시 돌아오면 세션이 끊기는 케이스가 잦아서 인앱 뷰어로 바꿈. 네이티브 브릿지를 새로 파서 mime별로 분기. 안드로이드는 권한 때문에 매니페스트 수정이 필수였음.

- mime별 핸들러 분기
- 임시 캐시 디렉토리 정리 루틴
- 파일 공유 provider 등록

provider 등록 안 하면 보안 예외로 그냥 죽음. 두 시간 날린 부분.

뒤로가기 처리

모달 위에 모달이 떠 있을 때 백버튼 우선순위가 꼬임. 진입 순서대로 스택을 직접 들고 있다가 pop 하는 방식으로 처리. 라이브러리 기본 핸들러는 중첩 상황에서 신뢰 못 함.

상태 백버튼 동작
모달 1개 모달 닫기
모달 중첩 최상단부터 차례로
모달 없음 라우터에 위임

커스텀 북마크

URL + 라벨 + 아이콘 셋트로 로컬 저장. 서버 동기화는 다음 스프린트로 미룸.

  • 정렬은 드래그 핸들로
  • 삭제는 길게 누르기
  • 최대 20개 캡

20개 넘기면 UX가 박살나서 강제 제한. 사용자가 화내면 그때 늘릴 것.

소셜 로그인

리프레시 직후 재요청에서 또 401이 떨어지면 갱신 → 401 → 갱신 무한 반복하던 버그. 흐름은 단순함.

요청 단위 재시도 카운터를 박음
한 번 갱신 후에도 401이면 강제 로그아웃
카운터는 finally 에서 초기화

원인은 서버 측 토큰 캐시 지연이었는데, 클라가 무한히 두드릴 일은 아니었음. 못 본 게 부끄러움.

회고

  • 작은 패치 네 개 묶었더니 PR 리뷰가 길어짐. 다음부터는 도메인별로 쪼개서 올릴 것
  • 네이티브 매니페스트 건드리는 변경은 항상 단독 PR로
  • 무한 루프류 버그는 카운터부터 박고 디버깅 — 로그 폭주 방지

다음

댓글 0

첫 댓글 달아줘.