Skip to main content

tauri_plugin_sharekit/
models.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
4#[serde(rename_all = "lowercase")]
5pub enum RectEdge {
6    Top,
7    Bottom,
8    Left,
9    Right,
10}
11
12#[derive(Debug, Serialize, Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct SharePosition {
15    pub x: f64,
16    pub y: f64,
17    /// macOS only: which edge the picker appears from
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub preferred_edge: Option<RectEdge>,
20}
21
22#[derive(Debug, Default, Serialize, Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub struct ShareTextOptions {
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub mime_type: Option<String>,
27    /// Position for the share sheet (iPad/macOS only)
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub position: Option<SharePosition>,
30}
31
32#[derive(Serialize)]
33pub struct ShareTextPayload {
34    pub text: String,
35    #[serde(flatten)]
36    pub options: ShareTextOptions,
37}
38
39#[derive(Debug, Default, Serialize, Deserialize)]
40#[serde(rename_all = "camelCase")]
41pub struct ShareFileOptions {
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub mime_type: Option<String>,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub title: Option<String>,
46    /// Position for the share sheet (iPad/macOS only)
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub position: Option<SharePosition>,
49}
50
51#[derive(Serialize)]
52pub struct ShareFilePayload {
53    pub url: String,
54    #[serde(flatten)]
55    pub options: ShareFileOptions,
56}