freya_webview/
lifecycle.rs1use std::sync::{
2 Arc,
3 Mutex,
4};
5
6use freya_core::prelude::try_consume_root_context;
7use torin::prelude::Area;
8
9use crate::registry::{
10 WebViewConfig,
11 WebViewId,
12};
13
14#[derive(Debug, Clone)]
15pub enum WebViewLifecycleEvent {
16 Resized {
17 id: WebViewId,
18 area: Area,
19 config: WebViewConfig,
20 },
21 Close {
22 id: WebViewId,
23 },
24 Hide {
25 id: WebViewId,
26 },
27}
28
29pub type WebViewEvents = Arc<Mutex<Vec<WebViewLifecycleEvent>>>;
30
31pub struct WebViewManager;
32
33impl WebViewManager {
34 fn get() -> WebViewEvents {
35 try_consume_root_context()
36 .expect("WebViewManager failed to initialize. You must load the WebViewPlugin.")
37 }
38
39 pub fn close(id: WebViewId) {
40 Self::get()
41 .lock()
42 .unwrap()
43 .push(WebViewLifecycleEvent::Close { id });
44 }
45}