Skip to content

Commit

Permalink
Fix no "try again" on providers that support this, #89
Browse files Browse the repository at this point in the history
  • Loading branch information
Lambada10 committed Oct 17, 2024
1 parent 47b10b5 commit ab5e81e
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 12 deletions.
3 changes: 2 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ class LyricsProviderService {
UnknownHostException::class, FileNotFoundException::class, NoTrackFoundException::class,
EmptyQueryException::class, InternalErrorException::class
)
suspend fun getSongInfo(query: SongInfo, offset: Int? = 0, provider: Providers): SongInfo? {
suspend fun getSongInfo(query: SongInfo, offset: Int = 0, provider: Providers): SongInfo? {
return try {
when (provider) {
Providers.SPOTIFY -> spotifyAPI.getSongInfo(query, offset)
Providers.LRCLIB -> LRCLibAPI().getSongInfo(query).also {
Providers.LRCLIB -> LRCLibAPI().getSongInfo(query, offset).also {
lrcLibID = it?.lrcLibID ?: 0
} ?: throw NoTrackFoundException()

Expand All @@ -68,7 +68,7 @@ class LyricsProviderService {
appleID = it?.appleID ?: 0
} ?: throw NoTrackFoundException()

Providers.MUSIXMATCH -> MusixmatchAPI().getSongInfo(query).also {
Providers.MUSIXMATCH -> MusixmatchAPI().getSongInfo(query, offset).also {
musixmatchID = it?.musixmatchID ?: 0
} ?: throw NoTrackFoundException()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class LRCLibAPI {
* @param query The SongInfo object with songName and artistName fields filled.
* @return Search result as a SongInfo object.
*/
suspend fun getSongInfo(query: SongInfo): SongInfo? {
suspend fun getSongInfo(query: SongInfo, offset: Int = 0): SongInfo? {
val search = withContext(Dispatchers.IO) {
URLEncoder.encode(
"${query.songName}", // it doesn't work with artist name and song name together
Expand All @@ -41,10 +41,16 @@ class LRCLibAPI {

val json = json.decodeFromString<List<LRCLibResponse>>(responseBody)

val song = try {
json[offset]
} catch (e: IndexOutOfBoundsException) {
return null
}

return SongInfo(
songName = json[0].trackName,
artistName = json[0].artistName,
lrcLibID = json[0].id
songName = song.trackName,
artistName = song.artistName,
lrcLibID = song.id
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class MusixmatchAPI {
* @param query The SongInfo object with songName and artistName fields filled.
* @return Search result as a SongInfo object.
*/
suspend fun getSongInfo(query: SongInfo): SongInfo? {
suspend fun getSongInfo(query: SongInfo, offset: Int = 0): SongInfo? {
val search = withContext(Dispatchers.IO) {
URLEncoder.encode(
"${query.songName} ${query.artistName}",
Expand All @@ -41,7 +41,11 @@ class MusixmatchAPI {

val json = json.decodeFromString<List<MusixmatchSearchResponse>>(responseBody)

val result = json[0]
val result = try {
json[offset]
} catch (e: IndexOutOfBoundsException) {
return null
}

return SongInfo(
songName = result.songName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,7 @@ fun SharedTransitionScope.LyricsFetchScreen(
lyricsFetchState = viewModel.lyricsFetchState,
animatedVisibilityScope = animatedVisibilityScope,
disableMarquee = viewModel.userSettingsController.disableMarquee,
allowTryingAgain = viewModel.userSettingsController.selectedProvider != Providers.LRCLIB
&& viewModel.userSettingsController.selectedProvider != Providers.APPLE
allowTryingAgain = viewModel.userSettingsController.selectedProvider != Providers.APPLE
)

is QueryStatus.Failed -> FailedDialogue(
Expand Down

0 comments on commit ab5e81e

Please sign in to comment.