use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use typed_builder::TypedBuilder;
use crate::{
extern_functions::{read, write},
helpers::*,
};
use crate::error::Error;
pub struct Clipboard;
impl Clipboard {
pub async fn write(options: impl Into<WriteOptions>) -> Result<(), Error> {
run_value_unit(options, write).await
}
pub async fn read() -> Result<ReadResult, Error> {
run_unit_value(read).await
}
}
#[skip_serializing_none]
#[derive(Clone, Default, Debug, PartialEq, Eq, Serialize, Deserialize, TypedBuilder)]
#[serde(rename_all = "camelCase", default)]
pub struct WriteOptions {
#[builder(default, setter(strip_option, into))]
pub string: Option<String>,
#[builder(default, setter(strip_option, into))]
pub image: Option<String>,
#[builder(default, setter(strip_option, into))]
pub url: Option<String>,
#[builder(default, setter(strip_option, into))]
pub label: Option<String>,
}
#[skip_serializing_none]
#[derive(Clone, Default, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", default)]
pub struct ReadResult {
pub value: String,
pub r#type: String,
}