diff --git a/crates/qconnect-protocol/src/decoder.rs b/crates/qconnect-protocol/src/decoder.rs index b41a0ce49..312eae9ee 100644 --- a/crates/qconnect-protocol/src/decoder.rs +++ b/crates/qconnect-protocol/src/decoder.rs @@ -566,7 +566,7 @@ fn map_tracks_loaded(payload: QueueTracksLoadedMessage) -> Result Result Result, ) -> Result { - let track_id = required_i32_to_u64(track.track_id, "queue_track.track_id")?; + let track_id = track.track_id.map(|v| v as u64).ok_or_else(|| { + ProtocolError::InvalidPayload("missing required field 'queue_track.track_id'".to_string()) + })?; let queue_item_id = optional_i32_to_u64_named(track.queue_item_id, "queue_track.queue_item_id")? .unwrap_or(track_id); @@ -980,7 +982,11 @@ fn queue_track_to_json( } fn queue_track_with_context_to_json(track: QueueTrackWithContext) -> Result { - let track_id = required_i32_to_u64(track.track_id, "queue_track_with_context.track_id")?; + let track_id = track.track_id.map(|v| v as u64).ok_or_else(|| { + ProtocolError::InvalidPayload( + "missing required field 'queue_track_with_context.track_id'".to_string(), + ) + })?; let queue_item_id = optional_i32_to_u64_named( track.queue_item_id, "queue_track_with_context.queue_item_id", diff --git a/crates/qconnect-protocol/src/mapper.rs b/crates/qconnect-protocol/src/mapper.rs index 29cff3d97..d838c9383 100644 --- a/crates/qconnect-protocol/src/mapper.rs +++ b/crates/qconnect-protocol/src/mapper.rs @@ -159,7 +159,7 @@ fn map_queue_command(command: &QueueCommand) -> Result { let track_ids = required_i32_list(&command.payload, "track_ids")?; - let shuffle_seed = optional_i32(&command.payload, "shuffle_seed")?; + let shuffle_seed = optional_i32(&command.payload, "shuffle_seed")?.map(|v| v as u32); let context_uuid = optional_uuid_bytes(&command.payload, &["context_uuid"])?; let autoplay_reset = optional_bool(&command.payload, "autoplay_reset", false); let autoplay_loading = @@ -182,7 +182,7 @@ fn map_queue_command(command: &QueueCommand) -> Result { let track_ids = required_i32_list(&command.payload, "track_ids")?; let queue_position = optional_i32(&command.payload, "queue_position")?; - let shuffle_seed = optional_i32(&command.payload, "shuffle_seed")?; + let shuffle_seed = optional_i32(&command.payload, "shuffle_seed")?.map(|v| v as u32); let shuffle_pivot_index = optional_i32(&command.payload, "shuffle_pivot_index")?; let shuffle_mode = optional_bool(&command.payload, "shuffle_mode", false); let context_uuid = optional_uuid_bytes(&command.payload, &["context_uuid"])?; @@ -210,7 +210,7 @@ fn map_queue_command(command: &QueueCommand) -> Result { let track_ids = required_i32_list(&command.payload, "track_ids")?; let insert_after = optional_i32(&command.payload, "insert_after")?; - let shuffle_seed = optional_i32(&command.payload, "shuffle_seed")?; + let shuffle_seed = optional_i32(&command.payload, "shuffle_seed")?.map(|v| v as u32); let context_uuid = optional_uuid_bytes(&command.payload, &["context_uuid"])?; let autoplay_reset = optional_bool(&command.payload, "autoplay_reset", false); let autoplay_loading = @@ -285,7 +285,7 @@ fn map_queue_command(command: &QueueCommand) -> Result { let shuffle_mode = optional_bool(&command.payload, "shuffle_mode", false); - let shuffle_seed = optional_i32(&command.payload, "shuffle_seed")?; + let shuffle_seed = optional_i32(&command.payload, "shuffle_seed")?.map(|v| v as u32); let shuffle_pivot_queue_item_id = optional_i32(&command.payload, "shuffle_pivot_queue_item_id")?; let autoplay_reset = optional_bool(&command.payload, "autoplay_reset", false); diff --git a/crates/qconnect-protocol/src/queue_command_proto.rs b/crates/qconnect-protocol/src/queue_command_proto.rs index 02e36195a..5895982e8 100644 --- a/crates/qconnect-protocol/src/queue_command_proto.rs +++ b/crates/qconnect-protocol/src/queue_command_proto.rs @@ -84,16 +84,16 @@ pub struct ErrorMessage { pub struct QueueTrack { #[prost(int32, optional, tag = "1")] pub queue_item_id: Option, - #[prost(int32, optional, tag = "2")] - pub track_id: Option, + #[prost(fixed32, optional, tag = "2")] + pub track_id: Option, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueueTrackWithContext { #[prost(int32, optional, tag = "1")] pub queue_item_id: Option, - #[prost(int32, optional, tag = "2")] - pub track_id: Option, + #[prost(fixed32, optional, tag = "2")] + pub track_id: Option, #[prost(bytes = "vec", optional, tag = "3")] pub context_uuid: Option>, } @@ -233,8 +233,8 @@ pub struct QueueLoadTracksMessage { pub track_ids: Vec, #[prost(int32, optional, tag = "4")] pub queue_position: Option, - #[prost(int32, optional, tag = "5")] - pub shuffle_seed: Option, + #[prost(fixed32, optional, tag = "5")] + pub shuffle_seed: Option, #[prost(int32, optional, tag = "6")] pub shuffle_pivot_index: Option, #[prost(bool, optional, tag = "7")] @@ -257,8 +257,8 @@ pub struct QueueInsertTracksMessage { pub track_ids: Vec, #[prost(int32, optional, tag = "4")] pub insert_after: Option, - #[prost(int32, optional, tag = "5")] - pub shuffle_seed: Option, + #[prost(fixed32, optional, tag = "5")] + pub shuffle_seed: Option, #[prost(bytes = "vec", optional, tag = "6")] pub context_uuid: Option>, #[prost(bool, optional, tag = "7")] @@ -275,8 +275,8 @@ pub struct QueueAddTracksMessage { pub action_uuid: Option>, #[prost(int32, repeated, packed = "false", tag = "3")] pub track_ids: Vec, - #[prost(int32, optional, tag = "4")] - pub shuffle_seed: Option, + #[prost(fixed32, optional, tag = "4")] + pub shuffle_seed: Option, #[prost(bytes = "vec", optional, tag = "5")] pub context_uuid: Option>, #[prost(bool, optional, tag = "6")] @@ -323,8 +323,8 @@ pub struct SetShuffleModeMessage { pub action_uuid: Option>, #[prost(bool, optional, tag = "3")] pub shuffle_mode: Option, - #[prost(int32, optional, tag = "4")] - pub shuffle_seed: Option, + #[prost(fixed32, optional, tag = "4")] + pub shuffle_seed: Option, #[prost(int32, optional, tag = "5")] pub shuffle_pivot_queue_item_id: Option, #[prost(bool, optional, tag = "6")] @@ -447,8 +447,8 @@ pub struct QueueTracksLoadedMessage { pub tracks: Vec, #[prost(int32, optional, tag = "4")] pub queue_position: Option, - #[prost(int32, optional, tag = "5")] - pub shuffle_seed: Option, + #[prost(fixed32, optional, tag = "5")] + pub shuffle_seed: Option, #[prost(int32, optional, tag = "6")] pub shuffle_pivot_queue_item_id: Option, #[prost(bool, optional, tag = "7")] @@ -473,8 +473,8 @@ pub struct QueueTracksInsertedMessage { pub tracks: Vec, #[prost(int32, optional, tag = "4")] pub insert_after: Option, - #[prost(int32, optional, tag = "5")] - pub shuffle_seed: Option, + #[prost(fixed32, optional, tag = "5")] + pub shuffle_seed: Option, #[prost(bytes = "vec", optional, tag = "6")] pub context_uuid: Option>, #[prost(bool, optional, tag = "7")] @@ -493,8 +493,8 @@ pub struct QueueTracksAddedMessage { pub action_uuid: Option>, #[prost(message, repeated, tag = "3")] pub tracks: Vec, - #[prost(int32, optional, tag = "4")] - pub shuffle_seed: Option, + #[prost(fixed32, optional, tag = "4")] + pub shuffle_seed: Option, #[prost(bytes = "vec", optional, tag = "5")] pub context_uuid: Option>, #[prost(bool, optional, tag = "6")] @@ -547,8 +547,8 @@ pub struct ShuffleModeSetMessage { pub action_uuid: Option>, #[prost(bool, optional, tag = "3")] pub shuffle_mode: Option, - #[prost(int32, optional, tag = "4")] - pub shuffle_seed: Option, + #[prost(fixed32, optional, tag = "4")] + pub shuffle_seed: Option, #[prost(int32, optional, tag = "5")] pub shuffle_pivot_queue_item_id: Option, #[prost(bool, optional, tag = "6")]