app_tauri_plugin_player/
models.rs1use serde::{Deserialize, Serialize};
7use tauri::ipc::Channel;
8
9#[derive(Debug, Deserialize, Serialize)]
11#[serde(rename_all = "camelCase")]
12pub struct Track {
13 pub id: String,
15 pub number: u32,
17 pub title: String,
19 pub album: String,
21 pub album_cover: Option<String>,
23 pub artist: String,
25 pub artist_cover: Option<String>,
27 pub duration: f64,
29}
30
31#[derive(Debug, Deserialize, Serialize)]
33#[serde(rename_all = "camelCase")]
34pub struct Playlist {
35 pub tracks: Vec<Track>,
37}
38
39#[derive(Debug, Deserialize, Serialize)]
41#[serde(rename_all = "camelCase")]
42pub struct UpdateState {
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub playing: Option<bool>,
46 #[serde(skip_serializing_if = "Option::is_none")]
48 pub position: Option<u16>,
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub seek: Option<f64>,
52 #[serde(skip_serializing_if = "Option::is_none")]
54 pub volume: Option<f64>,
55 #[serde(skip_serializing_if = "Option::is_none")]
57 pub playlist: Option<Playlist>,
58}
59
60#[derive(Debug, Clone, Default, Deserialize, Serialize)]
62#[serde(rename_all = "camelCase")]
63pub struct StateResponse {}
64
65#[derive(Serialize)]
67#[serde(rename_all = "camelCase")]
68pub struct InitChannel {
69 pub channel: Channel,
71}
72
73#[derive(Debug, Clone, Default, Deserialize, Serialize)]
75#[serde(rename_all = "camelCase")]
76pub struct InitChannelResponse {}
77
78#[derive(Debug, Deserialize, Serialize)]
80#[serde(rename_all = "camelCase")]
81pub struct MediaEvent {
82 #[serde(skip_serializing_if = "Option::is_none")]
84 pub play: Option<bool>,
85 #[serde(skip_serializing_if = "Option::is_none")]
87 pub next_track: Option<bool>,
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub prev_track: Option<bool>,
91}