Clean up, removed name based waiting room

This commit is contained in:
Christoph Stahl 2023-04-11 09:54:16 +02:00
parent 65a560c3fc
commit f7f5e5d7e9

View file

@ -188,8 +188,6 @@ async def handle_waiting_room_append(sid: str, data: dict[str, Any]) -> None:
room = session["room"] room = session["room"]
state = clients[room] state = clients[room]
print(data)
source_obj = state.config.sources[data["source"]] source_obj = state.config.sources[data["source"]]
entry = await source_obj.get_entry(data["performer"], data["ident"]) entry = await source_obj.get_entry(data["performer"], data["ident"])
@ -220,7 +218,6 @@ async def handle_waiting_room_append(sid: str, data: dict[str, Any]) -> None:
entry.uid = data["uid"] entry.uid = data["uid"]
state.waiting_room.append(entry) state.waiting_room.append(entry)
print(state.waiting_room)
await send_state(state, room) await send_state(state, room)
await sio.emit( await sio.emit(
"get-meta-info", "get-meta-info",
@ -402,29 +399,39 @@ async def handle_get_first(sid: str) -> None:
await sio.emit("play", current, room=sid) await sio.emit("play", current, room=sid)
async def add_song_from_waiting_room(old_entry: Entry, room: str) -> None: async def add_song_from_waiting_room(room: str) -> None:
"""
Add all songs from the waiting room, that should be added to the queue.
A song should be added if none of its performers are already queued.
This should be called every time a song leaves the queue.
:param room: The room holding the queue.
:type room: str
:rtype: None
"""
state = clients[room] state = clients[room]
first_entry_for_uid = None wrs_to_remove = []
for wr_entry in state.waiting_room: for wr_entry in state.waiting_room:
if wr_entry.uid == old_entry.uid or ( if state.queue.find_by_name(wr_entry.performer) is None:
wr_entry.uid == None await append_to_queue(room, wr_entry)
and wr_entry.shares_performer(old_entry.performer) wrs_to_remove.append(wr_entry)
):
first_entry_for_uid = wr_entry
break
if first_entry_for_uid is not None: for wr_entry in wrs_to_remove:
await append_to_queue(room, first_entry_for_uid) state.waiting_room.remove(wr_entry)
state.waiting_room.remove(first_entry_for_uid)
async def discard_first(room: str) -> Entry: async def discard_first(room: str) -> Entry:
"""
Gets the first element of the queue, handling resulting triggers.
"""
state = clients[room] state = clients[room]
old_entry = await state.queue.popleft() old_entry = await state.queue.popleft()
await add_song_from_waiting_room(old_entry, room) await add_song_from_waiting_room(room)
state.recent.append(old_entry) state.recent.append(old_entry)
state.last_seen = datetime.datetime.now() state.last_seen = datetime.datetime.now()
@ -568,7 +575,6 @@ async def handle_register_client(sid: str, data: dict[str, Any]) -> None:
) )
else: else:
logger.info("Registerd new client %s", room) logger.info("Registerd new client %s", room)
print(data)
initial_entries = [Entry(**entry) for entry in data["queue"]] initial_entries = [Entry(**entry) for entry in data["queue"]]
initial_waiting_room = [ initial_waiting_room = [
Entry(**entry) for entry in data["waiting_room"] Entry(**entry) for entry in data["waiting_room"]
@ -814,7 +820,7 @@ async def handle_skip(sid: str, data: dict[str, Any]) -> None:
if entry is not None: if entry is not None:
logger.info("Skipping %s", entry) logger.info("Skipping %s", entry)
await add_song_from_waiting_room(entry, room) await add_song_from_waiting_room(room)
await state.queue.remove(entry) await state.queue.remove(entry)