Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Amperfy.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -764,6 +764,7 @@
5068D37F26A85C2D0006710D /* DownloadError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadError.swift; sourceTree = "<group>"; };
506B3A3823B4539D00E31F21 /* Amperfy v2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Amperfy v2.xcdatamodel"; sourceTree = "<group>"; };
506C314D2EE6D2100011A2C3 /* Amperfy v49.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Amperfy v49.xcdatamodel"; sourceTree = "<group>"; };
50B9C4D92EF0000100C0DEC0 /* Amperfy v50.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Amperfy v50.xcdatamodel"; sourceTree = "<group>"; };
5070ED2C2D46979A00EB2972 /* Amperfy v42.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Amperfy v42.xcdatamodel"; sourceTree = "<group>"; };
507148AB2B767FE200557904 /* ContextQueuePrevSectionHeader.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ContextQueuePrevSectionHeader.xib; sourceTree = "<group>"; };
507148AC2B767FE200557904 /* ContextQueuePrevSectionHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextQueuePrevSectionHeader.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -3516,6 +3517,7 @@
500BB49521CAAA2700D367CF /* Amperfy.xcdatamodeld */ = {
isa = XCVersionGroup;
children = (
50B9C4D92EF0000100C0DEC0 /* Amperfy v50.xcdatamodel */,
506C314D2EE6D2100011A2C3 /* Amperfy v49.xcdatamodel */,
5084F70C2ED9D87500D8D3DA /* Amperfy v48.xcdatamodel */,
507C9AD82E29905D001589F8 /* Amperfy v47.xcdatamodel */,
Expand Down Expand Up @@ -3566,7 +3568,7 @@
506B3A3823B4539D00E31F21 /* Amperfy v2.xcdatamodel */,
500BB49621CAAA2700D367CF /* Amperfy.xcdatamodel */,
);
currentVersion = 506C314D2EE6D2100011A2C3 /* Amperfy v49.xcdatamodel */;
currentVersion = 50B9C4D92EF0000100C0DEC0 /* Amperfy v50.xcdatamodel */;
path = Amperfy.xcdatamodeld;
sourceTree = "<group>";
versionGroupType = wrapper.xcdatamodel;
Expand Down
2 changes: 1 addition & 1 deletion Amperfy/Screens/Player/PlayerUIHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ class PlayerUIHandler: NSObject {
albumLabel?.text = playableInfo.asSong?.album?.name ?? ""
albumButton?.isEnabled = playableInfo.isSong
albumContainerView?.isHidden = !playableInfo.isSong
artistLabel.text = playableInfo.creatorName
artistLabel.text = playableInfo.asSong?.creatorNameWithComposer ?? playableInfo.creatorName
}
} else {
switch player.playerMode {
Expand Down
2 changes: 1 addition & 1 deletion Amperfy/Screens/View/PlayableTableCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ class PlayableTableCell: BasicTableCell {
func refresh() {
guard let playable = playable else { return }
titleLabel.text = playable.title
artistLabel.text = playable.creatorName
artistLabel.text = playable.asSong?.creatorNameWithComposer ?? playable.creatorName

configureStyle(
playable: playable,
Expand Down
2 changes: 2 additions & 0 deletions AmperfyKit/Api/Ampache/SongParserDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,8 @@ class SongParserDelegate: PlayableParserDelegate {
songBuffer?.genre = genre
genreIdToCreate = nil
}
case "composer":
songBuffer?.composer = buffer
case "song":
parsedCount += 1
parseNotifier?.notifyParsedObject(ofType: .song)
Expand Down
3 changes: 3 additions & 0 deletions AmperfyKit/Api/Subsonic/SsSongParserDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ class SsSongParserDelegate: SsPlayableParserDelegate {
dateFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
songBuffer?.addedDate = dateFormatter.date(from: createdTag)
}
if let composer = attributeDict["composer"] {
songBuffer?.composer = composer
}
}

super.parser(
Expand Down
22 changes: 22 additions & 0 deletions AmperfyKit/Storage/EntityWrappers/Song.swift
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,18 @@ public class Song: AbstractPlayable, Identifyable {
}
}

public var composer: String? {
get {
guard let composer = managedObject.composer,
!composer.isEmpty else { return nil }
return composer
}
set {
let composer = newValue?.trimmingCharacters(in: .whitespacesAndNewlines)
managedObject.composer = composer?.isEmpty == true ? nil : composer
}
}

public var isOrphaned: Bool {
guard let album = album else { return true }
return album.isOrphaned
Expand All @@ -110,13 +122,20 @@ public class Song: AbstractPlayable, Identifyable {
artist?.name ?? "Unknown Artist"
}

public var creatorNameWithComposer: String {
guard let composer = composer else { return creatorName }
return "\(creatorName) \(CommonString.oneMiddleDot) \(composer)"
}

public var detailInfo: String {
var info = displayString
info += " ("
let albumName = album?.name ?? "-"
info += "album: \(albumName),"
let genreName = genre?.name ?? "-"
info += " genre: \(genreName),"
let composerInfo = composer ?? "-"
info += " composer: \(composerInfo),"

info += " id: \(id),"
info += " track: \(track),"
Expand Down Expand Up @@ -149,6 +168,9 @@ public class Song: AbstractPlayable, Identifyable {
if let genre = genre {
infoContent.append("Genre: \(genre.name)")
}
if let composer = composer {
infoContent.append("Composer: \(composer)")
}
if details.isShowDetailedInfo {
if bitrate > 0 {
infoContent.append("Bitrate: \(bitrate)")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>Amperfy v49.xcdatamodel</string>
<string>Amperfy v50.xcdatamodel</string>
</dict>
</plist>
Loading