### Description Currently, sessions and players are not properly removed from Firebase when users leave the lobby. This leads to: - Sessions persisting even after the host exits the lobby - Players remaining in a session after navigating away, allowing duplicate joins This issue aims to ensure proper cleanup of sessions and players when leaving the lobby. ### Requirements covered - Ensure session lifecycle is correctly managed - Ensure player list reflects only active participants ### Acceptance criteria #### Host leaves lobby When the host exits the lobby: - The entire session is deleted from Firestore - All associated players are removed #### Player leaves lobby When a non-host player exits the lobby: - The player is removed from Sessions/{sessionId}/Players - The session remains active #### Navigation handling Leaving the lobby via: - Back button - Navigation to another screen - Should trigger cleanup logic #### Prevent duplicate players A player should not be able to: - Join the same session multiple times by navigating back and rejoining ### Technical tasks - [ ] Add removePlayerFromSession(...) to FirebaseGateway - [ ] Add deleteSession(...) to FirebaseGateway - [ ] Implement both in FirestoreSessionRepository - [ ] Implement both in AndroidFirebaseGateway and NoOpFirebaseGateway - [ ] Add leaveLobby(...) method in LobbyService - [ ] Pass playerId and isHost to LobbyView / LobbyState - [ ] Update LobbyController.onBackFromLobby(...) to trigger cleanup - [ ] Ensure cleanup is only triggered once (avoid duplicate calls) ### Related requirement _No response_ ### Architecture layer None