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

Only get artwork from the internet if the pref is set

This commit is contained in:
Daniel Barber 2019-03-29 17:18:20 -04:00
parent 29ab98b28c
commit 025830b950
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
2 changed files with 21 additions and 11 deletions

View File

@ -31,7 +31,7 @@ class AlbumArtService {
return firstly {
self.getArtworkFromFilesystem()
}.then { (image: NSImage?) -> Promise<NSImage?> in
image.map(Promise.value) ?? self.getRemoteArtwork().map(Optional.some)
image.map(Promise.value) ?? self.getRemoteArtwork()
}.compactMap(on :artworkQueue) { image in
if self.fileSystemArtworkFilePath() != nil {
let sizedImage = image?.toFitBox(
@ -51,11 +51,16 @@ class AlbumArtService {
}.then { (artwork: NSImage?) -> Promise<NSImage?> in
artwork.map(Promise.value) ?? self.getArtworkFromFilesystem()
}.then { (artwork: NSImage?) -> Promise<NSImage?> in
artwork.map(Promise.value) ?? self.getRemoteArtwork().map(Optional.some)
artwork.map(Promise.value) ?? self.getRemoteArtwork()
}.compactMap(on: artworkQueue) {
return self.sizeAndCacheImage($0).map(Optional.some)
}.recover { error in
self.cacheArtwork(data: Data())
switch error {
case RemoteArtworkError.noArtworkAvailable:
self.cacheArtwork(data: Data())
default:
break
}
return .value(nil)
}
}

View File

@ -12,18 +12,23 @@ import PromiseKit
import PMKFoundation
extension AlbumArtService {
enum MusicBrainzError: Error {
enum RemoteArtworkError: Error {
case noArtworkAvailable
case notConfigured
}
func getRemoteArtwork() -> Promise<NSImage> {
func getRemoteArtwork() -> Promise<NSImage?> {
return Promise { seal in
artworkQueue.async {
let albumArtWorkItem = DispatchWorkItem {
self.getArtworkFromMusicBrainz().pipe(to: seal.resolve)
}
if preferences.fetchMissingArtworkFromInternet {
artworkQueue.async {
let albumArtWorkItem = DispatchWorkItem {
self.getArtworkFromMusicBrainz().map(Optional.some).pipe(to: seal.resolve)
}
AlbumArtQueue.shared.addToQueue(workItem: albumArtWorkItem)
AlbumArtQueue.shared.addToQueue(workItem: albumArtWorkItem)
}
} else {
throw RemoteArtworkError.notConfigured
}
}
}
@ -48,7 +53,7 @@ extension AlbumArtService {
)
}.recover { error -> Promise<NSImage> in
if case PMKHTTPError.badStatusCode(404, _, _) = error {
throw MusicBrainzError.noArtworkAvailable
throw RemoteArtworkError.noArtworkAvailable
} else {
throw error
}