use crate::error::PickerError;
use crate::token::FileAccessToken;
#[derive(Debug, Clone, Default)]
pub struct PickOptions {
pub mime_types: Vec<String>,
pub filter_label: Option<String>,
pub multi: bool,
}
#[derive(Debug, Clone, Default)]
pub struct SaveOptions {
pub mime_type: Option<String>,
pub suggested_name: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct FilePicker;
impl FilePicker {
#[must_use]
pub fn new() -> Self {
Self
}
#[must_use = "this returns a Result that may contain an error"]
pub async fn pick_file_to_open(
&self,
options: PickOptions,
) -> Result<Option<FileAccessToken>, PickerError> {
let opts = PickOptions {
multi: false,
..options
};
crate::platform::pick_open_single(opts).await
}
#[must_use = "this returns a Result that may contain an error"]
pub async fn pick_files_to_open(
&self,
options: PickOptions,
) -> Result<Vec<FileAccessToken>, PickerError> {
let opts = PickOptions {
multi: true,
..options
};
crate::platform::pick_open_multi(opts).await
}
#[must_use = "this returns a Result that may contain an error"]
pub async fn pick_file_to_save(
&self,
options: SaveOptions,
) -> Result<Option<FileAccessToken>, PickerError> {
crate::platform::pick_save(options).await
}
}