Bug: Incomplete logout leaves UI stuck in authenticated state when channel is missing or access is denied in ChatHeader.js

Đang mở
#1,427 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@yashsarvaiya45 đang làm issue này rồi.

Từ ngày 15/11/2026.

  • #1428 của @yashsarvaiya45 — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
javascript, react
Lĩnh vực
frontend

Hướng nghiên cứu

Start in packages/react/src/views/ChatHeader/ChatHeader.js at getChannelInfo (lines 202–288) and compare its two error branches with handleLogout() in the same file, noting which state resets are skipped. Also inspect the unguarded RCInstance.channelInfo() and setMessageAllowed paths. Done means both error branches reach the logout state reset and null/rejected responses are handled; verify by authenticating with a non-existent roomId. A linked open pull request (#1428) already covers this work, so read it before starting.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Description

In packages/react/src/views/ChatHeader/ChatHeader.js, when getChannelInfo encounters an 'error-room-not-found' or 'Not Allowed' error, it dispatches an error toast ("Logging out") and calls await RCInstance.logout() directly instead of invoking handleLogout().

Because handleLogout() is bypassed:

  1. setIsUserAuthenticated(false) is never called, leaving the React UI permanently stuck in the authenticated view even though the backend session has been terminated.
  2. Stores and UI state (setMessages([]), setChannelInfo({}), setShowSidebar(false), setUserAvatarUrl(null), and isMessageLoaded) are not reset.
  3. Additionally, getChannelInfo and setMessageAllowed lack try...catch blocks and safe optional chaining (res?.success, res && 'errorType' in res), which can cause an unhandled TypeError crash if RCInstance.channelInfo() returns undefined or rejects on network failure.
Affected File
  • packages/react/src/views/ChatHeader/ChatHeader.js (lines 202–288)
Steps to Reproduce
  1. Authenticate into EmbeddedChat configured with a non-existent roomId (error-room-not-found) or a restricted private room where the user lacks permission (Not Allowed).
  2. Observe the toast message: "Channel doesn't exist. Logging out." or "You don't have permission to access this channel. Logging out".
  3. Notice that while RCInstance.logout() runs, isUserAuthenticated remains true and the UI stays stuck in the logged-in state instead of returning to the login state.
Expected Behavior
  • Error-triggered logouts in getChannelInfo should call await handleLogout() so that isUserAuthenticated is set to false and all user/channel/message stores are properly cleared.
  • Async calls in getChannelInfo and setMessageAllowed should safely guard against null/undefined responses and network rejections.
Ngôn ngữ chính
JavaScript
Star
170
Fork
397
Merge trung bình
12 ngày 14 giờ
Pull request đã merge (30 ngày)
6

Chuẩn bị môi trường

  • Không có Dockerfile hay tệp Docker Compose
  • Có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của RocketChat/EmbeddedChat

Tất cả issue của RocketChat/EmbeddedChat

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.