Skip to content

Commit 3a80c63

Browse files
committed
add PanelHandle type alias
1 parent f0acda5 commit 3a80c63

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/lib.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,11 @@ pub trait FromWindow<R: Runtime>: Panel<R> + Sized {
169169
fn from_window(window: WebviewWindow<R>, label: String) -> tauri::Result<Self>;
170170
}
171171

172+
/// Type alias for shared panel references
173+
pub type PanelHandle<R> = Arc<dyn Panel<R>>;
174+
172175
pub struct Store<R: Runtime> {
173-
panels: HashMap<String, Arc<dyn Panel<R>>>,
176+
panels: HashMap<String, PanelHandle<R>>,
174177
}
175178

176179
impl<R: Runtime> Default for Store<R> {
@@ -190,8 +193,8 @@ impl<R: Runtime> Default for WebviewPanelManager<R> {
190193
}
191194

192195
pub trait ManagerExt<R: Runtime> {
193-
fn get_webview_panel(&self, label: &str) -> Result<Arc<dyn Panel<R>>, Error>;
194-
fn remove_webview_panel(&self, label: &str) -> Option<Arc<dyn Panel<R>>>;
196+
fn get_webview_panel(&self, label: &str) -> Result<PanelHandle<R>, Error>;
197+
fn remove_webview_panel(&self, label: &str) -> Option<PanelHandle<R>>;
195198
}
196199

197200
#[derive(Debug)]
@@ -200,7 +203,7 @@ pub enum Error {
200203
}
201204

202205
impl<R: Runtime, T: Manager<R>> ManagerExt<R> for T {
203-
fn get_webview_panel(&self, label: &str) -> Result<Arc<dyn Panel<R>>, Error> {
206+
fn get_webview_panel(&self, label: &str) -> Result<PanelHandle<R>, Error> {
204207
let manager = self.state::<self::WebviewPanelManager<R>>();
205208
let manager = manager.0.lock().unwrap();
206209

@@ -210,7 +213,7 @@ impl<R: Runtime, T: Manager<R>> ManagerExt<R> for T {
210213
}
211214
}
212215

213-
fn remove_webview_panel(&self, label: &str) -> Option<Arc<dyn Panel<R>>> {
216+
fn remove_webview_panel(&self, label: &str) -> Option<PanelHandle<R>> {
214217
self.state::<self::WebviewPanelManager<R>>()
215218
.0
216219
.lock()
@@ -222,14 +225,14 @@ impl<R: Runtime, T: Manager<R>> ManagerExt<R> for T {
222225

223226
pub trait WebviewWindowExt<R: Runtime> {
224227
/// Convert window to specific panel type
225-
fn to_panel<P: FromWindow<R> + 'static>(&self) -> tauri::Result<Arc<dyn Panel<R>>>;
228+
fn to_panel<P: FromWindow<R> + 'static>(&self) -> tauri::Result<PanelHandle<R>>;
226229
}
227230

228231
impl<R: Runtime> WebviewWindowExt<R> for WebviewWindow<R> {
229-
fn to_panel<P: FromWindow<R> + 'static>(&self) -> tauri::Result<Arc<dyn Panel<R>>> {
232+
fn to_panel<P: FromWindow<R> + 'static>(&self) -> tauri::Result<PanelHandle<R>> {
230233
let label = self.label().to_string();
231234
let panel = P::from_window(self.clone(), label.clone())?;
232-
let arc_panel = Arc::new(panel) as Arc<dyn Panel<R>>;
235+
let arc_panel = Arc::new(panel) as PanelHandle<R>;
233236

234237
let manager = self.state::<WebviewPanelManager<R>>();
235238
manager

0 commit comments

Comments
 (0)