1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00

Refactor cover art refresh using Promises

This commit is contained in:
Daniel Barber 2020-02-12 21:10:26 -05:00
parent ff3c7c4856
commit 3b4b5f5b5c
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8

View File

@ -7,17 +7,24 @@
//
import Foundation
import PromiseKit
import Kingfisher
struct CoverArtService {
let song: Song
let provider: MPDAlbumArtImageDataProvider
func refresh(callback: @escaping () -> Void?) {
let provider = MPDAlbumArtImageDataProvider(
init(song: Song) {
self.song = song
provider = MPDAlbumArtImageDataProvider(
songUri: song.mpdSong.uriString,
cacheKey: song.album.hash
)
}
func refreshAlbumListArt() -> Promise<Any> {
return Promise<Any> { seal in
_ = KingfisherManager.shared.retrieveImage(
with: .provider(provider),
options: [
@ -26,10 +33,14 @@ struct CoverArtService {
.processor(DownsamplingImageProcessor(size: .albumListCoverSize)),
.scaleFactor(2),
]
) { _ in
callback()
) { result in
seal.fulfill(result)
}
}
}
func refreshCurrentlyPlayingArt() -> Promise<Any> {
return Promise<Any> { seal in
_ = KingfisherManager.shared.retrieveImage(
with: .provider(provider),
options: [
@ -39,8 +50,14 @@ struct CoverArtService {
.scaleFactor(2),
.callbackQueue(.mainAsync)
]
) { _ in }
) { result in
seal.fulfill(result)
}
}
}
func refreshQueueSongArt() -> Promise<Any> {
return Promise<Any> { seal in
_ = KingfisherManager.shared.retrieveImage(
with: .provider(provider),
options: [
@ -49,8 +66,18 @@ struct CoverArtService {
.processor(DownsamplingImageProcessor(size: .queueSongCoverSize)),
.scaleFactor(2),
]
) { _ in
) { result in
seal.fulfill(result)
}
}
}
func refresh(callback: @escaping () -> Void?) {
_ = firstly {
when(fulfilled: refreshAlbumListArt(), refreshQueueSongArt(), refreshCurrentlyPlayingArt())
}.done { _, _, _ in
NotificationCenter.default.post(name: .didReloadAlbumArt, object: nil)
callback()
}
}
}