freya-webview 0.4.0-rc.11

WebView support for Freya using WRY
use std::sync::{
    Arc,
    Mutex,
};

use freya_core::prelude::try_consume_root_context;
use torin::prelude::Area;

use crate::registry::{
    WebViewConfig,
    WebViewId,
};

#[derive(Debug, Clone)]
pub enum WebViewLifecycleEvent {
    Resized {
        id: WebViewId,
        area: Area,
        config: WebViewConfig,
    },
    Close {
        id: WebViewId,
    },
    Hide {
        id: WebViewId,
    },
}

pub type WebViewEvents = Arc<Mutex<Vec<WebViewLifecycleEvent>>>;

pub struct WebViewManager;

impl WebViewManager {
    fn get() -> WebViewEvents {
        try_consume_root_context()
            .expect("WebViewManager failed to initialize. You must load the WebViewPlugin.")
    }

    pub fn close(id: WebViewId) {
        Self::get()
            .lock()
            .unwrap()
            .push(WebViewLifecycleEvent::Close { id });
    }
}