mod backend;
mod operations;
mod registry;
mod utils;
use tauri::{AppHandle, Manager, Runtime, WebviewWindow};
use crate::error::Result;
use crate::models::LiquidGlassConfig;
pub use registry::GlassViewRegistry;
pub fn is_glass_supported() -> bool {
utils::run_on_main_sync(utils::glass_class_available)
}
pub fn set_liquid_glass_effect<R: Runtime>(
app: &AppHandle<R>,
window: &WebviewWindow<R>,
config: LiquidGlassConfig,
) -> Result<()> {
let registry = app.state::<GlassViewRegistry>();
let window_label = window.label().to_string();
if config.enabled {
let existing = registry.contains(&window_label)?;
if existing {
operations::update_glass_effect(app, window, &config)
} else {
operations::create_glass_effect(app, window, &config)
}
} else {
operations::remove_glass_effect(app, &window_label)
}
}