use crate::extern_functions::*;
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use typed_builder::TypedBuilder;
use crate::helpers::*;
use crate::{error::Error};
pub struct Share;
impl Share {
pub async fn can_share() -> Result<CanShareResult, Error> {
run_unit_value(share_can_share).await
}
pub async fn share(options: impl Into<ShareOptions>) -> Result<ShareResult, Error> {
run_value_value(options, share_share).await
}
}
#[skip_serializing_none]
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", default)]
pub struct CanShareResult {
pub value: bool,
}
#[skip_serializing_none]
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", default)]
pub struct ShareResult {
pub activity_type: Option<String>,
}
#[skip_serializing_none]
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, TypedBuilder)]
#[serde(rename_all = "camelCase", default)]
pub struct ShareOptions {
#[builder(setter(into, strip_option), default)]
pub title: Option<String>,
#[builder(setter(into, strip_option), default)]
pub text: Option<String>,
#[builder(setter(into, strip_option), default)]
pub url: Option<String>,
#[builder(setter(into, strip_option), default)]
pub dialog_title: Option<String>,
#[builder(setter(into, strip_option), default)]
pub files: Option<Vec<String>>,
}