Clean up, removed name based waiting room
This commit is contained in:
parent
65a560c3fc
commit
f7f5e5d7e9
1 changed files with 23 additions and 17 deletions
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue