Show system messages when users join/leave room
This commit is contained in:
@@ -29,6 +29,8 @@ class RoomWidget(QWidget):
|
|||||||
self.room_code = ""
|
self.room_code = ""
|
||||||
self.expected_vlc_events = []
|
self.expected_vlc_events = []
|
||||||
self.last_reported_time_ms = 0
|
self.last_reported_time_ms = 0
|
||||||
|
self.current_users = []
|
||||||
|
self._is_first_user_update = True
|
||||||
|
|
||||||
self._setup_ui()
|
self._setup_ui()
|
||||||
|
|
||||||
@@ -176,6 +178,8 @@ class RoomWidget(QWidget):
|
|||||||
self.set_room_code_display(room_code)
|
self.set_room_code_display(room_code)
|
||||||
self.room_file_badge.setText(f"📄 {file_name}")
|
self.room_file_badge.setText(f"📄 {file_name}")
|
||||||
self.chat_messages.setHtml("Welcome to the room! 👋")
|
self.chat_messages.setHtml("Welcome to the room! 👋")
|
||||||
|
self.current_users = []
|
||||||
|
self._is_first_user_update = True
|
||||||
|
|
||||||
if file_path:
|
if file_path:
|
||||||
self.vlc_player.load_media(file_path, start_time_s)
|
self.vlc_player.load_media(file_path, start_time_s)
|
||||||
@@ -183,6 +187,8 @@ class RoomWidget(QWidget):
|
|||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
self.vlc_player.stop()
|
self.vlc_player.stop()
|
||||||
|
self.current_users = []
|
||||||
|
self._is_first_user_update = True
|
||||||
|
|
||||||
def set_room_code_display(self, text: str):
|
def set_room_code_display(self, text: str):
|
||||||
self.room_code_display.setText(f"Room: {text}")
|
self.room_code_display.setText(f"Room: {text}")
|
||||||
@@ -339,6 +345,21 @@ class RoomWidget(QWidget):
|
|||||||
self.add_system_message(f"{username} seeked to {fmt(position_s)}")
|
self.add_system_message(f"{username} seeked to {fmt(position_s)}")
|
||||||
|
|
||||||
def update_users(self, users: list):
|
def update_users(self, users: list):
|
||||||
|
if self._is_first_user_update:
|
||||||
|
self._is_first_user_update = False
|
||||||
|
else:
|
||||||
|
joined = set(users) - set(self.current_users)
|
||||||
|
left = set(self.current_users) - set(users)
|
||||||
|
|
||||||
|
for user in joined:
|
||||||
|
if user != self.username:
|
||||||
|
self.add_system_message(f"👋 {user} joined the room")
|
||||||
|
|
||||||
|
for user in left:
|
||||||
|
if user != self.username:
|
||||||
|
self.add_system_message(f"🚪 {user} left the room")
|
||||||
|
|
||||||
|
self.current_users = users
|
||||||
self.users_lbl.setText(f"{len(users)} watching: {', '.join(users)}")
|
self.users_lbl.setText(f"{len(users)} watching: {', '.join(users)}")
|
||||||
|
|
||||||
def add_chat_message(self, author: str, text: str, timestamp: int):
|
def add_chat_message(self, author: str, text: str, timestamp: int):
|
||||||
|
|||||||
Reference in New Issue
Block a user