mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
Add year to album details display
This commit is contained in:
parent
3eae535be6
commit
93d01d5176
@ -74,6 +74,7 @@
|
|||||||
E489E39D22B9CF0000CA8CBD /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E489E39C22B9CF0000CA8CBD /* NSView.swift */; };
|
E489E39D22B9CF0000CA8CBD /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E489E39C22B9CF0000CA8CBD /* NSView.swift */; };
|
||||||
E489E3A422B9D31800CA8CBD /* DraggedSongView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E489E3A222B9D31800CA8CBD /* DraggedSongView.swift */; };
|
E489E3A422B9D31800CA8CBD /* DraggedSongView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E489E3A222B9D31800CA8CBD /* DraggedSongView.swift */; };
|
||||||
E489E3A522B9D31800CA8CBD /* DraggedSongView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E489E3A322B9D31800CA8CBD /* DraggedSongView.xib */; };
|
E489E3A522B9D31800CA8CBD /* DraggedSongView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E489E3A322B9D31800CA8CBD /* DraggedSongView.xib */; };
|
||||||
|
E48E92D7235113DF00A5E1BB /* Metadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = E48E92D6235113DF00A5E1BB /* Metadata.swift */; };
|
||||||
E4928E0B2218D62A001D4BEA /* CGColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4928E0A2218D62A001D4BEA /* CGColor.swift */; };
|
E4928E0B2218D62A001D4BEA /* CGColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4928E0A2218D62A001D4BEA /* CGColor.swift */; };
|
||||||
E49A5482233E580800EED353 /* PromiseKit in Frameworks */ = {isa = PBXBuildFile; productRef = E49A5481233E580800EED353 /* PromiseKit */; };
|
E49A5482233E580800EED353 /* PromiseKit in Frameworks */ = {isa = PBXBuildFile; productRef = E49A5481233E580800EED353 /* PromiseKit */; };
|
||||||
E49A5485233E5ADC00EED353 /* Differ in Frameworks */ = {isa = PBXBuildFile; productRef = E49A5484233E5ADC00EED353 /* Differ */; };
|
E49A5485233E5ADC00EED353 /* Differ in Frameworks */ = {isa = PBXBuildFile; productRef = E49A5484233E5ADC00EED353 /* Differ */; };
|
||||||
@ -278,6 +279,7 @@
|
|||||||
E489E39C22B9CF0000CA8CBD /* NSView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSView.swift; sourceTree = "<group>"; };
|
E489E39C22B9CF0000CA8CBD /* NSView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSView.swift; sourceTree = "<group>"; };
|
||||||
E489E3A222B9D31800CA8CBD /* DraggedSongView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DraggedSongView.swift; sourceTree = "<group>"; };
|
E489E3A222B9D31800CA8CBD /* DraggedSongView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DraggedSongView.swift; sourceTree = "<group>"; };
|
||||||
E489E3A322B9D31800CA8CBD /* DraggedSongView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DraggedSongView.xib; sourceTree = "<group>"; };
|
E489E3A322B9D31800CA8CBD /* DraggedSongView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DraggedSongView.xib; sourceTree = "<group>"; };
|
||||||
|
E48E92D6235113DF00A5E1BB /* Metadata.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Metadata.swift; sourceTree = "<group>"; };
|
||||||
E4928E0A2218D62A001D4BEA /* CGColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGColor.swift; sourceTree = "<group>"; };
|
E4928E0A2218D62A001D4BEA /* CGColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGColor.swift; sourceTree = "<group>"; };
|
||||||
E4A3A6A022A457B600EA2C40 /* AlbumDetailSongListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumDetailSongListView.swift; sourceTree = "<group>"; };
|
E4A3A6A022A457B600EA2C40 /* AlbumDetailSongListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumDetailSongListView.swift; sourceTree = "<group>"; };
|
||||||
E4A642D922090CBE00067D21 /* MPDStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPDStatus.swift; sourceTree = "<group>"; };
|
E4A642D922090CBE00067D21 /* MPDStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPDStatus.swift; sourceTree = "<group>"; };
|
||||||
@ -734,6 +736,7 @@
|
|||||||
E419E2862249B96600216A8C /* Song.swift */,
|
E419E2862249B96600216A8C /* Song.swift */,
|
||||||
E47E2FDC2220A6D100F747E6 /* Time.swift */,
|
E47E2FDC2220A6D100F747E6 /* Time.swift */,
|
||||||
E4B11B72226A6C770075461B /* TrackTimer.swift */,
|
E4B11B72226A6C770075461B /* TrackTimer.swift */,
|
||||||
|
E48E92D6235113DF00A5E1BB /* Metadata.swift */,
|
||||||
);
|
);
|
||||||
path = Models;
|
path = Models;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -947,6 +950,7 @@
|
|||||||
E41E5307223C019100173814 /* MPDClient+Status.swift in Sources */,
|
E41E5307223C019100173814 /* MPDClient+Status.swift in Sources */,
|
||||||
E41E5310223EF6CE00173814 /* CoverArtService+Remote.swift in Sources */,
|
E41E5310223EF6CE00173814 /* CoverArtService+Remote.swift in Sources */,
|
||||||
E442CCCD2347E73C00004E0C /* Artist.swift in Sources */,
|
E442CCCD2347E73C00004E0C /* Artist.swift in Sources */,
|
||||||
|
E48E92D7235113DF00A5E1BB /* Metadata.swift in Sources */,
|
||||||
E41E530B223C033700173814 /* MPDClient+Album.swift in Sources */,
|
E41E530B223C033700173814 /* MPDClient+Album.swift in Sources */,
|
||||||
E42410B62241B956005ED6DF /* MPDClient+Database.swift in Sources */,
|
E42410B62241B956005ED6DF /* MPDClient+Database.swift in Sources */,
|
||||||
E4235640228623D2001216D6 /* QueueSongTitleView.swift in Sources */,
|
E4235640228623D2001216D6 /* QueueSongTitleView.swift in Sources */,
|
||||||
|
|||||||
@ -28,6 +28,15 @@ class AlbumDataSource: NSObject, NSCollectionViewDataSource {
|
|||||||
App.mpdClient.getAlbumFirstSong(for: albums[indexPath.item].mpdAlbum) { mpdSong in
|
App.mpdClient.getAlbumFirstSong(for: albums[indexPath.item].mpdAlbum) { mpdSong in
|
||||||
guard let mpdSong = mpdSong else { return }
|
guard let mpdSong = mpdSong else { return }
|
||||||
|
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
App.store.dispatch(
|
||||||
|
UpdateAlbumMetaData(
|
||||||
|
metadata: Metadata(date: mpdSong.date),
|
||||||
|
albumIndex: indexPath.item
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
CoverArtService(song: Song(mpdSong: mpdSong))
|
CoverArtService(song: Song(mpdSong: mpdSong))
|
||||||
.fetchCoverArt()
|
.fetchCoverArt()
|
||||||
.done { image in
|
.done { image in
|
||||||
|
|||||||
@ -17,7 +17,7 @@ class AlbumDetailView: NSViewController {
|
|||||||
|
|
||||||
@IBOutlet var albumTracksView: NSTableView!
|
@IBOutlet var albumTracksView: NSTableView!
|
||||||
@IBOutlet var albumTitle: NSTextField!
|
@IBOutlet var albumTitle: NSTextField!
|
||||||
@IBOutlet var albumArtist: NSTextField!
|
@IBOutlet var albumMetadata: NSTextFieldCell!
|
||||||
@IBOutlet var albumCoverView: NSImageView!
|
@IBOutlet var albumCoverView: NSImageView!
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
@ -41,8 +41,10 @@ class AlbumDetailView: NSViewController {
|
|||||||
|
|
||||||
getAlbumSongs(for: album)
|
getAlbumSongs(for: album)
|
||||||
|
|
||||||
|
let date = album.metadata?.date ?? ""
|
||||||
|
|
||||||
albumTitle.stringValue = album.title
|
albumTitle.stringValue = album.title
|
||||||
albumArtist.stringValue = album.artist
|
albumMetadata.stringValue = "\(album.artist) · \(date)"
|
||||||
|
|
||||||
switch album.coverArt {
|
switch album.coverArt {
|
||||||
case .loaded(let coverArt):
|
case .loaded(let coverArt):
|
||||||
@ -58,7 +60,7 @@ class AlbumDetailView: NSViewController {
|
|||||||
dataSource.albumSongs = []
|
dataSource.albumSongs = []
|
||||||
albumTracksView.reloadData()
|
albumTracksView.reloadData()
|
||||||
albumTitle.stringValue = ""
|
albumTitle.stringValue = ""
|
||||||
albumArtist.stringValue = ""
|
albumMetadata.stringValue = ""
|
||||||
albumCoverView.image = .defaultCoverArt
|
albumCoverView.image = .defaultCoverArt
|
||||||
|
|
||||||
App.store.dispatch(SetSelectedSong(selectedSong: nil))
|
App.store.dispatch(SetSelectedSong(selectedSong: nil))
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
<connections>
|
<connections>
|
||||||
<outlet property="albumArtist" destination="4Jx-I5-Nkv" id="mct-x3-yYC"/>
|
<outlet property="albumArtist" destination="4Jx-I5-Nkv" id="mct-x3-yYC"/>
|
||||||
<outlet property="albumCoverView" destination="FWd-vZ-5CT" id="aHh-Bz-XQW"/>
|
<outlet property="albumCoverView" destination="FWd-vZ-5CT" id="aHh-Bz-XQW"/>
|
||||||
|
<outlet property="albumMetadata" destination="ztJ-4E-qvI" id="YGK-TG-RPt"/>
|
||||||
<outlet property="albumTitle" destination="m2v-pR-e9v" id="M5i-u6-Nev"/>
|
<outlet property="albumTitle" destination="m2v-pR-e9v" id="M5i-u6-Nev"/>
|
||||||
<outlet property="albumTracksView" destination="ehr-qh-87Q" id="fSa-Di-CqI"/>
|
<outlet property="albumTracksView" destination="ehr-qh-87Q" id="fSa-Di-CqI"/>
|
||||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||||
@ -34,7 +35,7 @@
|
|||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4Jx-I5-Nkv">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4Jx-I5-Nkv">
|
||||||
<rect key="frame" x="357" y="488" width="448" height="19"/>
|
<rect key="frame" x="357" y="488" width="448" height="19"/>
|
||||||
<textFieldCell key="cell" title="Artist Name" id="ztJ-4E-qvI">
|
<textFieldCell key="cell" title="Metadata" id="ztJ-4E-qvI">
|
||||||
<font key="font" metaFont="system" size="16"/>
|
<font key="font" metaFont="system" size="16"/>
|
||||||
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
@ -219,15 +220,15 @@
|
|||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<button verticalHuggingPriority="750" misplaced="YES" imageHugsTitle="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jMU-bv-TNF">
|
<button verticalHuggingPriority="750" imageHugsTitle="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jMU-bv-TNF">
|
||||||
<rect key="frame" x="31" y="32" width="119" height="35"/>
|
<rect key="frame" x="31" y="184" width="119" height="35"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="33" id="2uQ-mC-4QY"/>
|
<constraint firstAttribute="height" constant="33" id="2uQ-mC-4QY"/>
|
||||||
<constraint firstAttribute="width" constant="119" id="h2n-ZB-Ufr"/>
|
<constraint firstAttribute="width" constant="119" id="h2n-ZB-Ufr"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<buttonCell key="cell" type="smallSquare" title="Play Album" bezelStyle="smallSquare" image="playButton" imagePosition="left" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Rtg-Zd-JYc">
|
<buttonCell key="cell" type="smallSquare" title="Play Album" bezelStyle="smallSquare" image="playButton" imagePosition="left" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Rtg-Zd-JYc">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="systemMedium" size="13"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="playAlbum:" target="-2" id="LTw-Lg-yH2"/>
|
<action selector="playAlbum:" target="-2" id="LTw-Lg-yH2"/>
|
||||||
@ -235,20 +236,20 @@
|
|||||||
</button>
|
</button>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
|
<constraint firstItem="BOb-Lr-10M" firstAttribute="top" secondItem="4Jx-I5-Nkv" secondAttribute="bottom" constant="29" id="1ty-6R-dGL"/>
|
||||||
<constraint firstItem="FWd-vZ-5CT" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="31" id="694-aS-G4N"/>
|
<constraint firstItem="FWd-vZ-5CT" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="31" id="694-aS-G4N"/>
|
||||||
<constraint firstItem="jMU-bv-TNF" firstAttribute="leading" secondItem="FWd-vZ-5CT" secondAttribute="leading" id="AwZ-M4-fep"/>
|
<constraint firstItem="jMU-bv-TNF" firstAttribute="leading" secondItem="FWd-vZ-5CT" secondAttribute="leading" id="AwZ-M4-fep"/>
|
||||||
<constraint firstItem="BOb-Lr-10M" firstAttribute="leading" secondItem="4Jx-I5-Nkv" secondAttribute="leading" id="GEK-R3-Sw6"/>
|
|
||||||
<constraint firstItem="BOb-Lr-10M" firstAttribute="top" secondItem="4Jx-I5-Nkv" secondAttribute="bottom" constant="29" id="K5g-Kd-iHK"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="BOb-Lr-10M" secondAttribute="bottom" constant="33" id="MZ6-81-2qe"/>
|
|
||||||
<constraint firstItem="4Jx-I5-Nkv" firstAttribute="leading" secondItem="m2v-pR-e9v" secondAttribute="leading" id="NaJ-VT-uln"/>
|
<constraint firstItem="4Jx-I5-Nkv" firstAttribute="leading" secondItem="m2v-pR-e9v" secondAttribute="leading" id="NaJ-VT-uln"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="BOb-Lr-10M" secondAttribute="bottom" constant="33" id="Q1M-yZ-LHD"/>
|
||||||
<constraint firstItem="FWd-vZ-5CT" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="25" id="QA9-xn-fzY"/>
|
<constraint firstItem="FWd-vZ-5CT" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="25" id="QA9-xn-fzY"/>
|
||||||
<constraint firstItem="m2v-pR-e9v" firstAttribute="top" secondItem="FWd-vZ-5CT" secondAttribute="top" id="bqi-HD-KZW"/>
|
<constraint firstItem="m2v-pR-e9v" firstAttribute="top" secondItem="FWd-vZ-5CT" secondAttribute="top" id="bqi-HD-KZW"/>
|
||||||
<constraint firstItem="jMU-bv-TNF" firstAttribute="top" secondItem="FWd-vZ-5CT" secondAttribute="bottom" constant="25" id="dd1-6b-TEN"/>
|
<constraint firstItem="jMU-bv-TNF" firstAttribute="top" secondItem="FWd-vZ-5CT" secondAttribute="bottom" constant="25" id="dd1-6b-TEN"/>
|
||||||
<constraint firstItem="4Jx-I5-Nkv" firstAttribute="trailing" secondItem="m2v-pR-e9v" secondAttribute="trailing" id="dmh-TC-Ncr"/>
|
<constraint firstItem="4Jx-I5-Nkv" firstAttribute="trailing" secondItem="m2v-pR-e9v" secondAttribute="trailing" id="dmh-TC-Ncr"/>
|
||||||
<constraint firstItem="m2v-pR-e9v" firstAttribute="leading" secondItem="FWd-vZ-5CT" secondAttribute="trailing" constant="28" id="icS-vq-PkK"/>
|
<constraint firstItem="m2v-pR-e9v" firstAttribute="leading" secondItem="FWd-vZ-5CT" secondAttribute="trailing" constant="28" id="icS-vq-PkK"/>
|
||||||
<constraint firstItem="4Jx-I5-Nkv" firstAttribute="top" secondItem="m2v-pR-e9v" secondAttribute="bottom" constant="8" symbolic="YES" id="nTZ-Ew-sDQ"/>
|
<constraint firstItem="4Jx-I5-Nkv" firstAttribute="top" secondItem="m2v-pR-e9v" secondAttribute="bottom" constant="8" symbolic="YES" id="nTZ-Ew-sDQ"/>
|
||||||
|
<constraint firstItem="BOb-Lr-10M" firstAttribute="leading" secondItem="4Jx-I5-Nkv" secondAttribute="leading" id="pXJ-Jl-uAG"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="m2v-pR-e9v" secondAttribute="trailing" constant="20" symbolic="YES" id="qyi-X9-6B9"/>
|
<constraint firstAttribute="trailing" secondItem="m2v-pR-e9v" secondAttribute="trailing" constant="20" symbolic="YES" id="qyi-X9-6B9"/>
|
||||||
<constraint firstItem="BOb-Lr-10M" firstAttribute="trailing" secondItem="4Jx-I5-Nkv" secondAttribute="trailing" id="sPx-cY-MeX"/>
|
<constraint firstItem="BOb-Lr-10M" firstAttribute="trailing" secondItem="4Jx-I5-Nkv" secondAttribute="trailing" id="zOM-i7-cog"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="262.5" y="121"/>
|
<point key="canvasLocation" x="262.5" y="121"/>
|
||||||
</customView>
|
</customView>
|
||||||
|
|||||||
@ -48,6 +48,10 @@ extension MPDClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var date: String {
|
||||||
|
return getTag(.date)
|
||||||
|
}
|
||||||
|
|
||||||
func getTag(_ tagType: MPDTag) -> String {
|
func getTag(_ tagType: MPDTag) -> String {
|
||||||
guard let tag = mpd_song_get_tag(song, tagType.mpdTag(), 0)
|
guard let tag = mpd_song_get_tag(song, tagType.mpdTag(), 0)
|
||||||
else { return "" }
|
else { return "" }
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import CryptoSwift
|
|||||||
struct Album {
|
struct Album {
|
||||||
var mpdAlbum: MPDClient.MPDAlbum
|
var mpdAlbum: MPDClient.MPDAlbum
|
||||||
var coverArt: Loading<NSImage?> = .notLoaded
|
var coverArt: Loading<NSImage?> = .notLoaded
|
||||||
|
var metadata: Metadata?
|
||||||
|
|
||||||
init(mpdAlbum: MPDClient.MPDAlbum) {
|
init(mpdAlbum: MPDClient.MPDAlbum) {
|
||||||
self.mpdAlbum = mpdAlbum
|
self.mpdAlbum = mpdAlbum
|
||||||
|
|||||||
13
Persephone/Models/Metadata.swift
Normal file
13
Persephone/Models/Metadata.swift
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
//
|
||||||
|
// Metadata.swift
|
||||||
|
// Persephone
|
||||||
|
//
|
||||||
|
// Created by Daniel Barber on 2019/10/11.
|
||||||
|
// Copyright © 2019 Dan Barber. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
struct Metadata {
|
||||||
|
var date: String?
|
||||||
|
}
|
||||||
@ -16,6 +16,11 @@ struct UpdateCoverArtAction: Action {
|
|||||||
var albumIndex: Int
|
var albumIndex: Int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct UpdateAlbumMetaData: Action {
|
||||||
|
var metadata: Metadata
|
||||||
|
var albumIndex: Int
|
||||||
|
}
|
||||||
|
|
||||||
struct UpdateAlbumListAction: Action {
|
struct UpdateAlbumListAction: Action {
|
||||||
var albums: [MPDClient.MPDAlbum]
|
var albums: [MPDClient.MPDAlbum]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,9 @@ func albumListReducer(action: Action, state: AlbumListState?) -> AlbumListState
|
|||||||
case let action as UpdateCoverArtAction:
|
case let action as UpdateCoverArtAction:
|
||||||
state.albums[action.albumIndex].coverArt = .loaded(action.coverArt)
|
state.albums[action.albumIndex].coverArt = .loaded(action.coverArt)
|
||||||
|
|
||||||
|
case let action as UpdateAlbumMetaData:
|
||||||
|
state.albums[action.albumIndex].metadata = action.metadata
|
||||||
|
|
||||||
case is ResetAlbumListCoverArtAction:
|
case is ResetAlbumListCoverArtAction:
|
||||||
state.albums = state.albums.map {
|
state.albums = state.albums.map {
|
||||||
var album = $0
|
var album = $0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user