Skip to content

SYSTEM 메시지를 metadata 기반 닉네임 lookup으로 재렌더링 #83

@parkjuyeong0312

Description

@parkjuyeong0312

설명

  • 백엔드 PR #134에서 SYSTEM 메시지 렌더링 계약이 명문화됨: content는 저장 시점 닉네임 fallback이고, 클라이언트가 metadata.eventType + userId로 현재 멤버 정보를 lookup해 본문을 재구성하는 게 권장.
  • 회원 탈퇴(PR #131) 도입으로 옛 닉네임이 그대로 박혀 보이는 비일관 문제가 발생 가능 — 렌더링 시점에 현재 멤버맵으로 다시 조립해 해결.

기대 동작

  • src/lib/chat.ts의 SYSTEM 분기에서 msg.metadata.eventType에 따라 본문을 조립:
    • MEMBER_JOINED → "{nickname}님이 입장했어요"
    • MEMBER_LEFT → "{nickname}님이 방을 나갔어요"
    • MEMBER_KICKED → "{targetNickname}님이 추방되었어요"
    • HOST_DELEGATED → "방장이 {newHostNickname}님으로 변경되었어요"
  • 닉네임은 metadata의 userId(예: previousHostUserId, newHostUserId)로 현재 방 멤버맵을 lookup해 사용.
  • 멤버맵에 없으면 "(알 수 없음)" 폴백, 최종 폴백은 기존 msg.content 유지.
  • LEFT 멤버를 포함한 멤버맵을 사용하면 lookup 적중률이 올라가므로 후속 이슈(LEFT 응답 반영)와 함께 동작 확인.

참고

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions