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 {
|
return firstly {
|
||||||
self.getArtworkFromFilesystem()
|
self.getArtworkFromFilesystem()
|
||||||
}.then { (image: NSImage?) -> Promise<NSImage?> in
|
}.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
|
}.compactMap(on :artworkQueue) { image in
|
||||||
if self.fileSystemArtworkFilePath() != nil {
|
if self.fileSystemArtworkFilePath() != nil {
|
||||||
let sizedImage = image?.toFitBox(
|
let sizedImage = image?.toFitBox(
|
||||||
@ -51,11 +51,16 @@ class AlbumArtService {
|
|||||||
}.then { (artwork: NSImage?) -> Promise<NSImage?> in
|
}.then { (artwork: NSImage?) -> Promise<NSImage?> in
|
||||||
artwork.map(Promise.value) ?? self.getArtworkFromFilesystem()
|
artwork.map(Promise.value) ?? self.getArtworkFromFilesystem()
|
||||||
}.then { (artwork: NSImage?) -> Promise<NSImage?> in
|
}.then { (artwork: NSImage?) -> Promise<NSImage?> in
|
||||||
artwork.map(Promise.value) ?? self.getRemoteArtwork().map(Optional.some)
|
artwork.map(Promise.value) ?? self.getRemoteArtwork()
|
||||||
}.compactMap(on: artworkQueue) {
|
}.compactMap(on: artworkQueue) {
|
||||||
return self.sizeAndCacheImage($0).map(Optional.some)
|
return self.sizeAndCacheImage($0).map(Optional.some)
|
||||||
}.recover { error in
|
}.recover { error in
|
||||||
self.cacheArtwork(data: Data())
|
switch error {
|
||||||
|
case RemoteArtworkError.noArtworkAvailable:
|
||||||
|
self.cacheArtwork(data: Data())
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
return .value(nil)
|
return .value(nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,18 +12,23 @@ import PromiseKit
|
|||||||
import PMKFoundation
|
import PMKFoundation
|
||||||
|
|
||||||
extension AlbumArtService {
|
extension AlbumArtService {
|
||||||
enum MusicBrainzError: Error {
|
enum RemoteArtworkError: Error {
|
||||||
case noArtworkAvailable
|
case noArtworkAvailable
|
||||||
|
case notConfigured
|
||||||
}
|
}
|
||||||
|
|
||||||
func getRemoteArtwork() -> Promise<NSImage> {
|
func getRemoteArtwork() -> Promise<NSImage?> {
|
||||||
return Promise { seal in
|
return Promise { seal in
|
||||||
artworkQueue.async {
|
if preferences.fetchMissingArtworkFromInternet {
|
||||||
let albumArtWorkItem = DispatchWorkItem {
|
artworkQueue.async {
|
||||||
self.getArtworkFromMusicBrainz().pipe(to: seal.resolve)
|
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
|
}.recover { error -> Promise<NSImage> in
|
||||||
if case PMKHTTPError.badStatusCode(404, _, _) = error {
|
if case PMKHTTPError.badStatusCode(404, _, _) = error {
|
||||||
throw MusicBrainzError.noArtworkAvailable
|
throw RemoteArtworkError.noArtworkAvailable
|
||||||
} else {
|
} else {
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user