item.sort_index = index
if self.settings.shuffle_enabled and len(queue_items) > 5:
queue_items = random.sample(queue_items, len(queue_items))
- self._items = queue_items
+ self._items = [x for x in queue_items if x is not None] # filter None items
await self.play_index(0, passive=passive)
self.signal_update(True)
+ queue_items
+ self._items[insert_at_index:]
)
-
+ self._items = [x for x in queue_items if x is not None] # filter None items
if offset in (0, cur_index):
await self.play_index(insert_at_index, passive=passive)
async def _update_items(self, queue_items: List[QueueItem]) -> None:
"""Update the existing queue items, mostly caused by reordering."""
- self._items = queue_items
+ self._items = [x for x in queue_items if x is not None] # filter None items
self.signal_update(True)
def __get_queue_stream_index(self) -> Tuple[int, int]:
"""Try to load the saved state from cache."""
if queue_cache := await self.mass.cache.get(f"queue_items.{self.queue_id}"):
try:
- self._items = [QueueItem.from_dict(x) for x in queue_cache["items"]]
+ self._items = [
+ QueueItem.from_dict(x)
+ for x in queue_cache["items"]
+ if x is not None
+ ]
self._current_index = queue_cache["current_index"]
self._current_item_elapsed_time = queue_cache.get(
"current_item_elapsed_time", 0