diff --git a/desktop-client/room_widget.py b/desktop-client/room_widget.py index c8fc389..276dd24 100644 --- a/desktop-client/room_widget.py +++ b/desktop-client/room_widget.py @@ -29,6 +29,8 @@ class RoomWidget(QWidget): self.room_code = "" self.expected_vlc_events = [] self.last_reported_time_ms = 0 + self.current_users = [] + self._is_first_user_update = True self._setup_ui() @@ -176,6 +178,8 @@ class RoomWidget(QWidget): self.set_room_code_display(room_code) self.room_file_badge.setText(f"📄 {file_name}") self.chat_messages.setHtml("Welcome to the room! 👋") + self.current_users = [] + self._is_first_user_update = True if file_path: self.vlc_player.load_media(file_path, start_time_s) @@ -183,6 +187,8 @@ class RoomWidget(QWidget): def cleanup(self): self.vlc_player.stop() + self.current_users = [] + self._is_first_user_update = True def set_room_code_display(self, text: str): 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)}") 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)}") def add_chat_message(self, author: str, text: str, timestamp: int):