Improve queue details loading

This commit is contained in:
Arkadiusz Fal
2022-06-26 13:12:32 +02:00
parent 05f1c0b6c8
commit 281c88df45
5 changed files with 17 additions and 12 deletions

View File

@@ -179,10 +179,6 @@ extension PlayerModel {
}
func restoreQueue() {
guard !accounts.current.isNil else {
return
}
var restoredQueue = [PlayerQueueItem?]()
if let lastPlayed = Defaults[.lastPlayed],
@@ -194,12 +190,14 @@ extension PlayerModel {
restoredQueue.append(contentsOf: Defaults[.queue])
queue = restoredQueue.compactMap { $0 }
}
queue.forEach { item in
accounts.api.loadDetails(item) { newItem in
if let index = self.queue.firstIndex(where: { $0.id == item.id }) {
self.queue[index] = newItem
}
func loadQueueVideoDetails(_ item: PlayerQueueItem) {
guard !accounts.current.isNil, !item.hasDetailsLoaded else { return }
accounts.api.loadDetails(item) { newItem in
if let index = self.queue.firstIndex(where: { $0.id == item.id }) {
self.queue[index] = newItem
}
}
}

View File

@@ -39,6 +39,10 @@ struct PlayerQueueItem: Hashable, Identifiable, Defaults.Serializable {
return duration - seconds <= 10
}
var hasDetailsLoaded: Bool {
!video.isNil
}
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}