package com.suno.android.common_data.mappers.lyrics import arrow.core.raise.either import com.suno.android.common_data.mappers.hooks.Lyrics import com.suno.android.common_networking.remote.entities.hooks.RemoteHooksLyric import kotlinx.collections.immutable.toImmutableList import kotlin.time.Duration.Companion.seconds fun Collection.xAsLyrics() = let { remote -> either { Lyrics( lines = remote.map { remoteLine -> Lyrics.Line( startTime = remoteLine.startSeconds?.seconds ?: raise("line startSeconds is required"), endTime = remoteLine.endSeconds?.seconds ?: raise("line endSeconds is required"), text = remoteLine.text ?: raise("line text is required"), section = remoteLine.section, words = remoteLine.words?.map { remoteWord -> Lyrics.Word( startTime = remoteWord.startSeconds?.seconds ?: raise("word startSeconds is required"), endTime = remoteWord.endSeconds?.seconds ?: raise("word endSeconds is required"), text = remoteWord.text ?: raise("word text is required"), ) }?.toImmutableList() ?: raise("words is required"), ) }.toImmutableList(), ) } }