Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changes/reload.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'tauri': 'minor:feat'
'tauri-runtime-wry': 'minor:feat'
---

feat: add `Webview.reload` and `WebviewWindow.reload`
17 changes: 17 additions & 0 deletions crates/tauri-runtime-wry/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1303,6 +1303,7 @@ pub enum WebviewMessage {
WebviewEvent(WebviewEvent),
SynthesizedWindowEvent(SynthesizedWindowEvent),
Navigate(Url),
Reload,
Print,
Close,
Show,
Expand Down Expand Up @@ -1466,6 +1467,17 @@ impl<T: UserEvent> WebviewDispatch<T> for WryWebviewDispatcher<T> {
)
}

fn reload(&self) -> Result<()> {
send_user_message(
&self.context,
Message::Webview(
*self.window_id.lock().unwrap(),
self.webview_id,
WebviewMessage::Reload,
),
)
}

fn print(&self) -> Result<()> {
send_user_message(
&self.context,
Expand Down Expand Up @@ -3307,6 +3319,11 @@ fn handle_user_message<T: UserEvent>(
log::error!("failed to navigate to url {}: {}", url, e);
}
}
WebviewMessage::Reload => {
if let Err(e) = webview.reload() {
log::error!("failed to reload: {e}");
}
}
WebviewMessage::Show => {
if let Err(e) = webview.set_visible(true) {
log::error!("failed to change webview visibility: {e}");
Expand Down
3 changes: 3 additions & 0 deletions crates/tauri-runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,9 @@ pub trait WebviewDispatch<T: UserEvent>: Debug + Clone + Send + Sync + Sized + '
/// Navigate to the given URL.
fn navigate(&self, url: Url) -> Result<()>;

/// Reloads the current page.
fn reload(&self) -> Result<()>;

/// Opens the dialog to prints the contents of the webview.
fn print(&self) -> Result<()>;

Expand Down
4 changes: 4 additions & 0 deletions crates/tauri/src/test/mock_runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,10 @@ impl<T: UserEvent> WebviewDispatch<T> for MockWebviewDispatcher {
Ok(())
}

fn reload(&self) -> Result<()> {
Ok(())
}

fn print(&self) -> Result<()> {
Ok(())
}
Expand Down
5 changes: 5 additions & 0 deletions crates/tauri/src/webview/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1303,6 +1303,11 @@ fn main() {
self.webview.dispatcher.navigate(url).map_err(Into::into)
}

/// Reloads the current page.
pub fn reload(&self) -> crate::Result<()> {
self.webview.dispatcher.reload().map_err(Into::into)
}

fn is_local_url(&self, current_url: &Url) -> bool {
let uses_https = current_url.scheme() == "https";

Expand Down
5 changes: 5 additions & 0 deletions crates/tauri/src/webview/webview_window.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1898,6 +1898,11 @@ impl<R: Runtime> WebviewWindow<R> {
self.webview.navigate(url)
}

/// Reloads the current page.
pub fn reload(&self) -> crate::Result<()> {
self.webview.reload()
}

/// Handles this window receiving an [`crate::webview::InvokeRequest`].
pub fn on_message(
self,
Expand Down