fix: restore native Android play-event recording (History was empty) #89

Merged
bvandeusen merged 2 commits from dev into main 2026-06-11 09:08:21 -04:00
Showing only changes of commit 653ed95f14 - Show all commits
@@ -1,5 +1,9 @@
@file:OptIn(ExperimentalSerializationApi::class)
package com.fabledsword.minstrel.models.wire
import kotlinx.serialization.EncodeDefault
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@@ -15,7 +19,11 @@ import kotlinx.serialization.Serializable
@Serializable
data class PlayStartedRequest(
val type: String = "play_started",
// Discriminator MUST stay on the wire. The app's Json has
// encodeDefaults=false, so without this a `type` left at its
// default is omitted entirely and the server 400s the event as
// "unknown event type" — silently dropping every native play.
@EncodeDefault(EncodeDefault.Mode.ALWAYS) val type: String = "play_started",
@SerialName("track_id") val trackId: String,
@SerialName("client_id") val clientId: String,
val source: String? = null,
@@ -28,21 +36,21 @@ data class PlayStartedResponse(
@Serializable
data class PlayEndedRequest(
val type: String = "play_ended",
@EncodeDefault(EncodeDefault.Mode.ALWAYS) val type: String = "play_ended",
@SerialName("play_event_id") val playEventId: String,
@SerialName("duration_played_ms") val durationPlayedMs: Long,
)
@Serializable
data class PlaySkippedRequest(
val type: String = "play_skipped",
@EncodeDefault(EncodeDefault.Mode.ALWAYS) val type: String = "play_skipped",
@SerialName("play_event_id") val playEventId: String,
@SerialName("position_ms") val positionMs: Long,
)
@Serializable
data class PlayOfflineRequest(
val type: String = "play_offline",
@EncodeDefault(EncodeDefault.Mode.ALWAYS) val type: String = "play_offline",
@SerialName("track_id") val trackId: String,
@SerialName("client_id") val clientId: String,
val at: String,