diff --git a/android/app/src/main/java/com/fabledsword/minstrel/player/LikeMediaCallback.kt b/android/app/src/main/java/com/fabledsword/minstrel/player/LikeMediaCallback.kt index 1b8cf73f..9af56f44 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/player/LikeMediaCallback.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/player/LikeMediaCallback.kt @@ -52,16 +52,22 @@ class LikeMediaCallback( customCommand: SessionCommand, args: Bundle, ): ListenableFuture { - if (customCommand.customAction != CMD_TOGGLE_LIKE) { - return Futures.immediateFuture(SessionResult(SessionResult.RESULT_ERROR_NOT_SUPPORTED)) + val code = if (customCommand.customAction == CMD_TOGGLE_LIKE) { + launchToggleForCurrent(session) + } else { + SessionResult.RESULT_ERROR_NOT_SUPPORTED } + return Futures.immediateFuture(SessionResult(code)) + } + + private fun launchToggleForCurrent(session: MediaSession): Int { val mediaId = session.player.currentMediaItem?.mediaId - ?: return Futures.immediateFuture(SessionResult(SessionResult.RESULT_INFO_SKIPPED)) + ?: return SessionResult.RESULT_INFO_SKIPPED scope.launch { val current = likes.observeIsLiked(ENTITY_TRACK, mediaId).first() likes.toggleLike(ENTITY_TRACK, mediaId, !current) } - return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS)) + return SessionResult.RESULT_SUCCESS } companion object {