app_tauri_plugin_player/
models.rs1use serde::{Deserialize, Serialize};
2use tauri::ipc::Channel;
3
4#[derive(Debug, Deserialize, Serialize)]
5#[serde(rename_all = "camelCase")]
6pub struct Track {
7 pub id: String,
8 pub number: u32,
9 pub title: String,
10 pub album: String,
11 pub album_cover: Option<String>,
12 pub artist: String,
13 pub artist_cover: Option<String>,
14 pub duration: f64,
15}
16
17#[derive(Debug, Deserialize, Serialize)]
18#[serde(rename_all = "camelCase")]
19pub struct Playlist {
20 pub tracks: Vec<Track>,
21}
22
23#[derive(Debug, Deserialize, Serialize)]
24#[serde(rename_all = "camelCase")]
25pub struct UpdateState {
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub playing: Option<bool>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub position: Option<u16>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub seek: Option<f64>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub volume: Option<f64>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub playlist: Option<Playlist>,
36}
37
38#[derive(Debug, Clone, Default, Deserialize, Serialize)]
39#[serde(rename_all = "camelCase")]
40pub struct StateResponse {}
41
42#[derive(Serialize)]
43#[serde(rename_all = "camelCase")]
44pub struct InitChannel {
45 pub channel: Channel,
46}
47
48#[derive(Debug, Clone, Default, Deserialize, Serialize)]
49#[serde(rename_all = "camelCase")]
50pub struct InitChannelResponse {}
51
52#[derive(Debug, Deserialize, Serialize)]
53#[serde(rename_all = "camelCase")]
54pub struct MediaEvent {
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub play: Option<bool>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub next_track: Option<bool>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub prev_track: Option<bool>,
61}