diff --git a/src/synclean/cli/room_commands.py b/src/synclean/cli/room_commands.py index 69ab5df..8e0322a 100644 --- a/src/synclean/cli/room_commands.py +++ b/src/synclean/cli/room_commands.py @@ -18,10 +18,10 @@ room = click.Group(name="room", help="Room commands.") @click.option("--search", "-s", help="Search term to filter rooms by.") @click.option("--order-by", "-O", type=click.Choice(["name", "joined_members", "canonical_alias", "creator", "version",]), - default="name", help="Field to order result by.") + default="joined_members", help="Field to order result by.") @click.option("--direction", "-d", type=click.Choice(["f", "b"]), - default="b", help="Direction to order result by. (f=forward, b=backward)") + default="f", help="Direction to order result by. (f=forward, b=backward)") @pass_api def room_ls( api: SynapseApiClient, @@ -82,6 +82,8 @@ def show_room( remove_media_id: Optional[str], avatar: bool ): + room_id = f"!{room_id}:{api.config.homeserver}" + if room_id is None: click.echo("You must specify a room ID.", err=True) return @@ -92,17 +94,15 @@ def show_room( return room_api = RoomAPI(api) - room_details = room_api.get_room_details(room_id) - - if not room_details: - click.echo(f"Error: Room {room_id} not found.", err=True) - return + room_service = RoomService(room_api) + room_details = room_service.get_room_details(room_id) if avatar: if not room_details.avatar: click.echo("Room has no avatar.") return - click.echo(room_details.avatar) + click.echo(f"\nRoom Avatar: {room_details.avatar}") + exit(0) # TODO: implement adding avatar to blacklist if rm_all: @@ -116,20 +116,24 @@ def show_room( pass if not media: - click.echo(f"Room details: {room_id}") - click.echo("=" * 40) + click.echo(f"Room details for room {room_id}:") click.echo(f"Name: {room_details.name}") - click.echo(f"Avatar: {room_details.avatar}") click.echo(f"ID: {room_details.room_id}") - click.echo(f"Members: {room_details.joined_members} (Local: {room_details.joined_local_members})") + click.echo(f"Avatar: {room_details.avatar}") + click.echo(f"Joined Members: {room_details.joined_members} (local: {room_details.joined_local_members})") + click.echo(f"Version: {room_details.version}") click.echo(f"Creator: {room_details.creator}") click.echo(f"Encryption: {room_details.encryption}") + click.echo(f"Federatable: {room_details.federatable}") click.echo(f"Public: {room_details.public}") + click.echo(f"Join Rules: {room_details.join_rules}") click.echo(f"Guest Access: {room_details.guest_access}") click.echo(f"History Visibility: {room_details.history_visibility}") click.echo(f"State Events: {room_details.state_events}") click.echo(f"Room Type: {room_details.room_type}") - else: + click.echo("=" * 50) + + if media or click.confirm("Do you want to list media in the room?", default=True): room_media = room_api.get_media_from_room(room_id) if room_media: for uri in room_media.all_uris: