2017-09-02 19:40:32 +02:00
|
|
|
// Converts Playlist entity from [org.moire.ultrasonic.api.subsonic.SubsonicAPIClient]
|
|
|
|
// to app domain entities.
|
|
|
|
@file:JvmName("APIPlaylistConverter")
|
2018-02-17 20:36:19 +01:00
|
|
|
package org.moire.ultrasonic.domain
|
2017-09-02 19:40:32 +02:00
|
|
|
|
|
|
|
import java.text.SimpleDateFormat
|
2017-11-10 21:31:48 +01:00
|
|
|
import kotlin.LazyThreadSafetyMode.NONE
|
2017-09-02 19:40:32 +02:00
|
|
|
import org.moire.ultrasonic.api.subsonic.models.Playlist as APIPlaylist
|
2021-11-09 22:20:41 +01:00
|
|
|
import org.moire.ultrasonic.util.Util.ifNotNull
|
2017-09-02 19:40:32 +02:00
|
|
|
|
2017-11-10 21:31:48 +01:00
|
|
|
internal val playlistDateFormat by lazy(NONE) { SimpleDateFormat.getInstance() }
|
|
|
|
|
2017-09-02 19:40:32 +02:00
|
|
|
fun APIPlaylist.toMusicDirectoryDomainEntity(): MusicDirectory = MusicDirectory().apply {
|
|
|
|
name = this@toMusicDirectoryDomainEntity.name
|
2021-12-21 12:16:40 +01:00
|
|
|
addAll(this@toMusicDirectoryDomainEntity.entriesList.map { it.toTrackEntity() })
|
2017-09-02 19:40:32 +02:00
|
|
|
}
|
|
|
|
|
2020-06-13 19:04:31 +02:00
|
|
|
fun APIPlaylist.toDomainEntity(): Playlist = Playlist(
|
|
|
|
this.id, this.name, this.owner,
|
|
|
|
this.comment, this.songCount.toString(),
|
2021-11-09 22:20:41 +01:00
|
|
|
this.created.ifNotNull { playlistDateFormat.format(it.time) } ?: "",
|
2020-06-13 19:04:31 +02:00
|
|
|
public
|
|
|
|
)
|
2017-09-02 19:40:32 +02:00
|
|
|
|
|
|
|
fun List<APIPlaylist>.toDomainEntitiesList(): List<Playlist> = this.map { it.toDomainEntity() }
|