Skip to content

Commit 573e2ca

Browse files
authored
Added "title" field to have one place to define name alterations (#306)
1 parent 11f7534 commit 573e2ca

18 files changed

Lines changed: 83 additions & 83 deletions

File tree

androidApp/src/main/kotlin/io/music_assistant/client/auto/AutoLibrary.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ fun AppMediaItem.toMediaDescription(
399399
): MediaDescriptionCompat {
400400
return MediaDescriptionCompat.Builder()
401401
.setMediaId("${itemId}__${uri}__${mediaType}__$provider")
402-
.setTitle((if (favorite == true) "\u2665 " else "") + name)
402+
.setTitle((if (favorite == true) "\u2665 " else "") + title)
403403
.setSubtitle(subtitle)
404404
.setMediaUri(uri?.let { Uri.parse(it) })
405405
.setIconUri(imageInfo?.url(serverUrl)?.let { Uri.parse(it) } ?: defaultIconUri)

androidApp/src/main/kotlin/io/music_assistant/client/services/MediaNotificationData.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ data class MediaNotificationData(
2525
MediaNotificationData(
2626
multiplePlayers = multiplePlayers,
2727
longItemId = playerData.queueInfo?.currentItem?.track?.longId,
28-
name = playerData.queueInfo?.currentItem?.track?.name,
28+
name = playerData.queueInfo?.currentItem?.track?.title,
2929
artist = playerData.queueInfo?.currentItem?.track?.subtitle,
3030
album = playerData.queueInfo?.currentItem?.track?.parentName,
3131
repeatMode = playerData.queueInfo?.repeatMode,

androidApp/src/test/kotlin/io/music_assistant/client/ui/compose/item/ItemDetailsTest.kt

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ class ItemDetailsTest {
4646
)
4747
}
4848

49-
composeTestRule.onAllNodes(hasText(artist.name)).onFirst().assertIsDisplayed()
49+
composeTestRule.onAllNodes(hasText(artist.title)).onFirst().assertIsDisplayed()
5050
composeTestRule.inScrollable("LazyVerticalGrid") {
51-
onNode(hasText(albums[0].name)).assertIsDisplayed()
52-
onNode(hasText(albums[1].name)).assertIsDisplayed()
51+
onNode(hasText(albums[0].title)).assertIsDisplayed()
52+
onNode(hasText(albums[1].title)).assertIsDisplayed()
5353
}
5454
}
5555

@@ -70,11 +70,11 @@ class ItemDetailsTest {
7070
)
7171
}
7272

73-
composeTestRule.onAllNodes(hasText(album.name)).onFirst().assertIsDisplayed()
74-
composeTestRule.onAllNodes(hasText(artist.name)).onFirst().assertIsDisplayed()
73+
composeTestRule.onAllNodes(hasText(album.title)).onFirst().assertIsDisplayed()
74+
composeTestRule.onAllNodes(hasText(artist.title)).onFirst().assertIsDisplayed()
7575
composeTestRule.inScrollable("LazyVerticalGrid") {
76-
onNode(hasText(tracks[0].name)).assertIsDisplayed()
77-
onNode(hasText(tracks[1].name)).assertIsDisplayed()
76+
onNode(hasText(tracks[0].title)).assertIsDisplayed()
77+
onNode(hasText(tracks[1].title)).assertIsDisplayed()
7878
}
7979
}
8080

@@ -131,12 +131,12 @@ class ItemDetailsTest {
131131
)
132132
}
133133

134-
composeTestRule.onAllNodes(hasText(playlist.name)).onFirst().assertIsDisplayed()
134+
composeTestRule.onAllNodes(hasText(playlist.title)).onFirst().assertIsDisplayed()
135135
composeTestRule.inScrollable("LazyVerticalGrid") {
136-
onNode(hasText(tracks[0].name)).assertIsDisplayed()
137-
onNode(hasText(tracks[0].artists!![0].name)).assertIsDisplayed()
138-
onNode(hasText(tracks[1].name)).assertIsDisplayed()
139-
onNode(hasText(tracks[1].artists!![0].name)).assertIsDisplayed()
136+
onNode(hasText(tracks[0].title)).assertIsDisplayed()
137+
onNode(hasText(tracks[0].artists!![0].title)).assertIsDisplayed()
138+
onNode(hasText(tracks[1].title)).assertIsDisplayed()
139+
onNode(hasText(tracks[1].artists!![0].title)).assertIsDisplayed()
140140
}
141141
}
142142

@@ -157,10 +157,10 @@ class ItemDetailsTest {
157157
)
158158
}
159159

160-
composeTestRule.onAllNodes(hasText(podcast.name)).onFirst().assertIsDisplayed()
160+
composeTestRule.onAllNodes(hasText(podcast.title)).onFirst().assertIsDisplayed()
161161
composeTestRule.inScrollable("LazyVerticalGrid") {
162-
onNode(hasText(episodes[0].name)).assertIsDisplayed()
163-
onNode(hasText(episodes[1].name)).assertIsDisplayed()
162+
onNode(hasText(episodes[0].title)).assertIsDisplayed()
163+
onNode(hasText(episodes[1].title)).assertIsDisplayed()
164164
}
165165
}
166166

@@ -179,7 +179,7 @@ class ItemDetailsTest {
179179
)
180180
}
181181

182-
composeTestRule.onAllNodes(hasText(audiobook.name)).onFirst().assertIsDisplayed()
182+
composeTestRule.onAllNodes(hasText(audiobook.title)).onFirst().assertIsDisplayed()
183183
val chapters = audiobook.chapters!!
184184
composeTestRule.inScrollable("LazyVerticalGrid") {
185185
onNode(hasText(chapters[0].name)).assertIsDisplayed()

composeApp/src/commonMain/kotlin/io/music_assistant/client/data/MainDataSource.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ class MainDataSource(
584584
val serverUrl = apiClient.serverBaseUrl.value
585585
if (track != null) {
586586
mediaPlayerController.updateNowPlaying(
587-
title = track.name,
587+
title = track.title,
588588
artist = track.subtitle,
589589
album = track.parentName,
590590
artworkUrl = track.imageInfo?.url(serverUrl),

composeApp/src/commonMain/kotlin/io/music_assistant/client/data/model/client/AppMediaItem.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ interface PlayableItem {
2222
val defaultIcon: ImageVector
2323
val parentName: String?
2424
val itemId: String
25-
val name: String
25+
val title: String
2626
val version: String?
2727
val duration: Double?
2828
val uri: String?
@@ -38,7 +38,7 @@ interface PlayableItem {
3838
abstract class AppMediaItem(
3939
val itemId: String,
4040
val provider: String,
41-
val name: String,
41+
private val name: String,
4242
val providerMappings: List<ProviderMapping>?,
4343
metadata: Metadata?,
4444
val favorite: Boolean?,
@@ -51,6 +51,7 @@ abstract class AppMediaItem(
5151
// val timestampModified: Long?,
5252
val canStartRadio: Boolean = false,
5353
) {
54+
open val title: String = name
5455
open val subtitle: String? = null
5556
val longId = itemId.hashCode().toLong()
5657

@@ -247,7 +248,7 @@ abstract class AppMediaItem(
247248
image = image,
248249
canStartRadio = true,
249250
) {
250-
override val subtitle = artists.joinToString(separator = ", ") { it.name }
251+
override val subtitle = artists.joinToString(separator = ", ") { it.title }
251252
}
252253

253254
class Track(
@@ -290,8 +291,10 @@ abstract class AppMediaItem(
290291
canStartRadio = true,
291292
),
292293
PlayableItem {
293-
override val subtitle = artists?.joinToString(separator = ", ") { it.name }
294-
override val parentName: String? = album?.name
294+
override val title =
295+
"${name}${version?.trim()?.takeIf { it.isNotBlank() }?.let { " ($it)" } ?: ""}"
296+
override val subtitle = artists?.joinToString(separator = ", ") { it.title }
297+
override val parentName: String? = album?.title
295298
override val defaultIcon = TrackIcon
296299
}
297300

@@ -382,7 +385,7 @@ abstract class AppMediaItem(
382385
),
383386
PlayableItem {
384387
override val subtitle = metadata?.releaseDate?.let(::formatIsoDate)
385-
override val parentName: String? = podcast?.name
388+
override val parentName: String? = podcast?.title
386389
override val defaultIcon = Icons.Default.Podcasts
387390
}
388391

composeApp/src/commonMain/kotlin/io/music_assistant/client/data/model/client/SortOption.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,22 +104,22 @@ fun <T> List<T>.clientSorted(option: SortOption): List<T> {
104104
(it as? AppMediaItem.Track)?.trackNumber
105105
}
106106
SortField.NAME -> compareBy(String.CASE_INSENSITIVE_ORDER) {
107-
(it as? AppMediaItem)?.sortName ?: (it as? AppMediaItem)?.name
108-
?: (it as? PlayableItem)?.name ?: ""
107+
(it as? AppMediaItem)?.sortName ?: (it as? AppMediaItem)?.title
108+
?: (it as? PlayableItem)?.title ?: ""
109109
}
110110
SortField.DURATION -> compareBy { (it as? PlayableItem)?.duration ?: 0.0 }
111111
SortField.YEAR -> compareBy { (it as? AppMediaItem.Album)?.year ?: 0 }
112112
SortField.RELEASE_DATE -> compareBy(String.CASE_INSENSITIVE_ORDER) {
113113
(it as? AppMediaItem.PodcastEpisode)?.releaseDate ?: ""
114114
}
115115
SortField.ARTIST_NAME -> compareBy(String.CASE_INSENSITIVE_ORDER) {
116-
(it as? AppMediaItem.Track)?.artists?.firstOrNull()?.name
117-
?: (it as? AppMediaItem.Album)?.artists?.firstOrNull()?.name
116+
(it as? AppMediaItem.Track)?.artists?.firstOrNull()?.title
117+
?: (it as? AppMediaItem.Album)?.artists?.firstOrNull()?.title
118118
?: ""
119119
}
120120
else -> compareBy(String.CASE_INSENSITIVE_ORDER) {
121-
(it as? AppMediaItem)?.sortName ?: (it as? AppMediaItem)?.name
122-
?: (it as? PlayableItem)?.name ?: ""
121+
(it as? AppMediaItem)?.sortName ?: (it as? AppMediaItem)?.title
122+
?: (it as? PlayableItem)?.title ?: ""
123123
}
124124
}
125125
return if (option.descending) sortedWith(comparator.reversed()) else sortedWith(comparator)

composeApp/src/commonMain/kotlin/io/music_assistant/client/ui/compose/common/items/BrowsableItemWithMenu.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ private fun <T : AppMediaItem> BrowsableItemWithMenu(
539539
modifier = Modifier.fillMaxWidth(),
540540
) {
541541
Text(
542-
text = playlist.name,
542+
text = playlist.title,
543543
modifier = Modifier.fillMaxWidth(),
544544
)
545545
}

0 commit comments

Comments
 (0)