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:
parent
ff3c7c4856
commit
3b4b5f5b5c
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user