mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-07-30 17:48:50 +02:00
feat(window-state): make flags optional in js side (#2619)
This commit is contained in:
@@ -5,13 +5,25 @@
|
||||
use crate::{AppHandleExt, StateFlags, WindowExt};
|
||||
use tauri::{command, AppHandle, Manager, Runtime};
|
||||
|
||||
fn get_state_flags<R: Runtime>(
|
||||
app: &AppHandle<R>,
|
||||
flags: Option<u32>,
|
||||
) -> std::result::Result<StateFlags, String> {
|
||||
let flags = if let Some(flags) = flags {
|
||||
StateFlags::from_bits(flags).ok_or_else(|| format!("Invalid state flags bits: {flags}"))?
|
||||
} else {
|
||||
let plugin_state = app.state::<crate::PluginState>();
|
||||
plugin_state.state_flags
|
||||
};
|
||||
Ok(flags)
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub async fn save_window_state<R: Runtime>(
|
||||
app: AppHandle<R>,
|
||||
flags: u32,
|
||||
flags: Option<u32>,
|
||||
) -> std::result::Result<(), String> {
|
||||
let flags = StateFlags::from_bits(flags)
|
||||
.ok_or_else(|| format!("Invalid state flags bits: {}", flags))?;
|
||||
let flags = get_state_flags(&app, flags)?;
|
||||
app.save_window_state(flags).map_err(|e| e.to_string())?;
|
||||
Ok(())
|
||||
}
|
||||
@@ -20,12 +32,11 @@ pub async fn save_window_state<R: Runtime>(
|
||||
pub async fn restore_state<R: Runtime>(
|
||||
app: AppHandle<R>,
|
||||
label: String,
|
||||
flags: u32,
|
||||
flags: Option<u32>,
|
||||
) -> std::result::Result<(), String> {
|
||||
let flags = StateFlags::from_bits(flags)
|
||||
.ok_or_else(|| format!("Invalid state flags bits: {}", flags))?;
|
||||
let flags = get_state_flags(&app, flags)?;
|
||||
app.get_webview_window(&label)
|
||||
.ok_or_else(|| format!("Couldn't find window with label: {}", label))?
|
||||
.ok_or_else(|| format!("Couldn't find window with label: {label}"))?
|
||||
.restore_state(flags)
|
||||
.map_err(|e| e.to_string())?;
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user