Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 27e846ac authored by Sebastiano Barezzi's avatar Sebastiano Barezzi
Browse files

Twelve: Add lyrics method

Change-Id: Ice841cc6e924dba6f7a50012e6cc8babcf7a6b28
parent 65c59746
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ import org.lineageos.twelve.models.Audio
import org.lineageos.twelve.models.DataSourceInformation
import org.lineageos.twelve.models.Genre
import org.lineageos.twelve.models.GenreContent
import org.lineageos.twelve.models.Lyrics
import org.lineageos.twelve.models.MediaItem
import org.lineageos.twelve.models.Playlist
import org.lineageos.twelve.models.RequestStatus
@@ -84,6 +85,10 @@ object DummyDataSource : MediaDataSource {
        RequestStatus.Error<Audio, _>(MediaError.NOT_FOUND)
    )

    override fun lyrics(audioUri: Uri) = flowOf(
        RequestStatus.Error<Lyrics, _>(MediaError.NOT_FOUND)
    )

    override suspend fun createPlaylist(name: String) =
        RequestStatus.Error<Uri, _>(MediaError.NOT_IMPLEMENTED)

+5 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import org.lineageos.twelve.models.DataSourceInformation
import org.lineageos.twelve.models.Genre
import org.lineageos.twelve.models.GenreContent
import org.lineageos.twelve.models.LocalizedString
import org.lineageos.twelve.models.Lyrics
import org.lineageos.twelve.models.MediaItem
import org.lineageos.twelve.models.MediaType
import org.lineageos.twelve.models.Playlist
@@ -269,6 +270,10 @@ class JellyfinDataSource(
            uri?.let(this::audio) ?: flowOf(RequestStatus.Error(MediaError.NOT_FOUND))
        }

    override fun lyrics(audioUri: Uri) = flowOf(
        RequestStatus.Error<Lyrics, _>(MediaError.NOT_IMPLEMENTED)
    )

    override suspend fun createPlaylist(name: String) = run {
        client.createPlaylist(name).toRequestStatus {
            onPlaylistsChanged()
+5 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import org.lineageos.twelve.models.DataSourceInformation
import org.lineageos.twelve.models.Genre
import org.lineageos.twelve.models.GenreContent
import org.lineageos.twelve.models.LocalizedString
import org.lineageos.twelve.models.Lyrics
import org.lineageos.twelve.models.MediaItem
import org.lineageos.twelve.models.MediaType
import org.lineageos.twelve.models.Playlist
@@ -635,6 +636,10 @@ class LocalDataSource(
            )
        }

    override fun lyrics(audioUri: Uri) = flowOf(
        RequestStatus.Error<Lyrics, _>(MediaError.NOT_IMPLEMENTED)
    )

    override fun lastPlayedAudio() = database.getLastPlayedDao()
        .get(LAST_PLAYED_KEY)
        .flatMapLatest { uri ->
+7 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ import org.lineageos.twelve.models.Audio
import org.lineageos.twelve.models.DataSourceInformation
import org.lineageos.twelve.models.Genre
import org.lineageos.twelve.models.GenreContent
import org.lineageos.twelve.models.Lyrics
import org.lineageos.twelve.models.MediaItem
import org.lineageos.twelve.models.MediaType
import org.lineageos.twelve.models.Playlist
@@ -111,6 +112,12 @@ interface MediaDataSource {
     */
    fun lastPlayedAudio(): Flow<MediaRequestStatus<Audio>>

    /**
     * Get the lyrics of an audio.
     * @param audioUri The URI of the audio
     */
    fun lyrics(audioUri: Uri): Flow<RequestStatus<Lyrics, MediaError>>

    /**
     * Create a new playlist. Note that the name shouldn't be considered unique if possible, but
     * this may vary per data source.
+5 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import org.lineageos.twelve.models.DataSourceInformation
import org.lineageos.twelve.models.Genre
import org.lineageos.twelve.models.GenreContent
import org.lineageos.twelve.models.LocalizedString
import org.lineageos.twelve.models.Lyrics
import org.lineageos.twelve.models.MediaType
import org.lineageos.twelve.models.Playlist
import org.lineageos.twelve.models.ProviderArgument
@@ -374,6 +375,10 @@ class SubsonicDataSource(
            uri?.let(this::audio) ?: flowOf(RequestStatus.Error(MediaError.NOT_FOUND))
        }

    override fun lyrics(audioUri: Uri) = flowOf(
        RequestStatus.Error<Lyrics, _>(MediaError.NOT_IMPLEMENTED)
    )

    override suspend fun createPlaylist(name: String) = subsonicClient.createPlaylist(
        null, name, listOf()
    ).toRequestStatus {
Loading