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:
parent
29ab98b28c
commit
025830b950
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user