use crate::extern_functions::*;
use crate::helpers::*;
use crate::{error::Error};
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
#[skip_serializing_none]
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", default)]
pub struct ShowActionsOptions {
pub title: String,
pub message: Option<String>,
pub options: Vec<ActionSheetButton>,
}
#[skip_serializing_none]
#[derive(Clone, Default, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", default)]
pub struct ActionSheetButton {
pub title: String,
pub icon: Option<String>,
pub style: Option<ActionSheetButtonStyle>,
}
#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum ActionSheetButtonStyle {
#[default]
Default,
Destructive,
Cancel,
}
#[skip_serializing_none]
#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", default)]
pub struct ShowActionsResult {
pub index: u32,
}
pub struct ActionSheet;
impl ActionSheet {
pub async fn show_actions(
options: impl Into<ShowActionsOptions>,
) -> Result<ShowActionsResult, Error> {
run_value_value(options, action_sheet_show_actions).await
}
}