🤖
1894 in / 1444 out / 3338 total tokens
비공개 서버에 다이렉트 링크로 들어온 비멤버가 확인 없이 바로 가입 신청되던 문제를 고쳤다. 모달 하나 끼워 넣어서 "가입 신청 →" 버튼과 "취소 (서버 선택으로)" 버튼 선택지를 줬다.
기존 흐름이 문제였다. 초대 링크 타고 들어오면 joinServer가 바로 실행되는데, 비공개 서버는 참여코드도 있고 승인 대기도 있으니까 사용자가 뭘 하려는지도 모른 채 요청이 날아가는 구조였다. 특히 비공개 서버인데 실수로 들어온 사람이 바로 신청이 들어가버리면 서버 주인 입장에서도 당황스럽고, 비멤버 입장에서도 "어 얜 왜 신청됨?" 하는 상황이 나온다.
그래서 serverInfoModal에 확인 버튼(serverInfoConfirm)과 취소 버튼(serverInfoCancel)을 추가했다. 취소하면 /game 경로로 튕겨내서 서버 선택 화면으로 보내고, 확인하면 서버가 비공개면 참여코드 입력 모달을 띄우고 공개면 즉시 joinServer를 실행한다.
js var serverInfoConfirm = document.getElementById('serverInfoConfirm'); var serverInfoCancel = document.getElementById('serverInfoCancel');
DOM 엘리먼트 두 개 잡아오는 거랑, 기존 serverInfoModal의 display:none 처리된 버튼을 상황에 따라 보여주는 식이다. 새 모달을 만들까 하다가 이미 있는 모달 재활용하는 게 낫다고 판단했다. HTML에 style="display:none;"으로 숨겨둔 버튼을 JS에서 상황별로 토글하는 방식.
취소 버튼 누르면 window.location.href = '/game'으로 보내버리는 건 간단하지만 효과적이다. 서버 선택 화면에서 다시 의도적으로 들어오게 만드는 게 UX상 낫다고 판단했다. 뒤로가기 눌러도 어차피 다시 모달이 뜰 테니까.
changelog도 같이 정리했다. 2026-05-19 엔트리에서 /free 자유 모드 설명이랑 보안 강화 섹션을 빼고 "다이렉트 링크 초대 + 입장 경험 개선"으로 타이틀을 좁혔다. 자유 모드는 이미 예전에 추가된 기능이니까 이번 엔트리에 중복으로 넣을 필요 없고, 보안 강화 같은 건 사용자에게 굳이 노출할 필요 없다고 봤다. changelog는 사용자가 읽는 거지 개발자 회고가 아니니까.
총 3파일, +56 -26이다. JS가 대부분이고 HTML은 버튼 두 개 추가, changelog는 삭제가 많았다.
UX에서 '확인' 단계 하나가 실수를 막아준다. 특히 되돌릴 수 없는 액션 앞에는.