mirror of
https://github.com/tauri-apps/tauri.git
synced 2024-11-28 20:48:52 +03:00
This commit is contained in:
parent
0d63732b96
commit
b7f53d66e8
@ -2,4 +2,4 @@
|
|||||||
"tauri": patch:bug
|
"tauri": patch:bug
|
||||||
---
|
---
|
||||||
|
|
||||||
Fixes IPC failing to communicate for remote URLs on macOS.
|
Fixes IPC failing to communicate for remote URLs on macOS and iOS.
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
cmd === fetchChannelDataCommand ||
|
cmd === fetchChannelDataCommand ||
|
||||||
!(osName === 'linux' || osName === 'android')
|
!(osName === 'linux' || osName === 'android')
|
||||||
) &&
|
) &&
|
||||||
!(osName === 'macos' && location.protocol === 'https:')
|
!((osName === 'macos' || osName === 'ios') && location.protocol === 'https:')
|
||||||
) {
|
) {
|
||||||
const {
|
const {
|
||||||
contentType,
|
contentType,
|
||||||
|
@ -21,7 +21,7 @@ use crate::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
pub(crate) mod channel;
|
pub(crate) mod channel;
|
||||||
#[cfg(any(target_os = "macos", not(ipc_custom_protocol)))]
|
#[cfg(any(target_os = "macos", target_os = "ios", not(ipc_custom_protocol)))]
|
||||||
pub(crate) mod format_callback;
|
pub(crate) mod format_callback;
|
||||||
pub(crate) mod protocol;
|
pub(crate) mod protocol;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ use super::{CallbackFn, InvokeBody, InvokeResponse};
|
|||||||
const TAURI_CALLBACK_HEADER_NAME: &str = "Tauri-Callback";
|
const TAURI_CALLBACK_HEADER_NAME: &str = "Tauri-Callback";
|
||||||
const TAURI_ERROR_HEADER_NAME: &str = "Tauri-Error";
|
const TAURI_ERROR_HEADER_NAME: &str = "Tauri-Error";
|
||||||
|
|
||||||
#[cfg(any(target_os = "macos", not(ipc_custom_protocol)))]
|
#[cfg(any(target_os = "macos", target_os = "ios", not(ipc_custom_protocol)))]
|
||||||
pub fn message_handler<R: Runtime>(
|
pub fn message_handler<R: Runtime>(
|
||||||
manager: WindowManager<R>,
|
manager: WindowManager<R>,
|
||||||
) -> crate::runtime::webview::WebviewIpcHandler<crate::EventLoopMessage, R> {
|
) -> crate::runtime::webview::WebviewIpcHandler<crate::EventLoopMessage, R> {
|
||||||
@ -125,7 +125,7 @@ pub fn get<R: Runtime>(manager: WindowManager<R>, label: String) -> UriSchemePro
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "macos", not(ipc_custom_protocol)))]
|
#[cfg(any(target_os = "macos", target_os = "ios", not(ipc_custom_protocol)))]
|
||||||
fn handle_ipc_message<R: Runtime>(message: String, manager: &WindowManager<R>, label: &str) {
|
fn handle_ipc_message<R: Runtime>(message: String, manager: &WindowManager<R>, label: &str) {
|
||||||
if let Some(window) = manager.get_window(label) {
|
if let Some(window) = manager.get_window(label) {
|
||||||
use serde::{Deserialize, Deserializer};
|
use serde::{Deserialize, Deserializer};
|
||||||
@ -241,7 +241,7 @@ fn handle_ipc_message<R: Runtime>(message: String, manager: &WindowManager<R>, l
|
|||||||
|
|
||||||
match &response {
|
match &response {
|
||||||
InvokeResponse::Ok(InvokeBody::Json(v)) => {
|
InvokeResponse::Ok(InvokeBody::Json(v)) => {
|
||||||
if !cfg!(target_os = "macos")
|
if !(cfg!(target_os = "macos") || cfg!(target_os = "ios"))
|
||||||
&& matches!(v, JsonValue::Object(_) | JsonValue::Array(_))
|
&& matches!(v, JsonValue::Object(_) | JsonValue::Array(_))
|
||||||
{
|
{
|
||||||
let _ = Channel::from_ipc(window.clone(), callback).send(v);
|
let _ = Channel::from_ipc(window.clone(), callback).send(v);
|
||||||
@ -254,12 +254,12 @@ fn handle_ipc_message<R: Runtime>(message: String, manager: &WindowManager<R>, l
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
InvokeResponse::Ok(InvokeBody::Raw(v)) => {
|
InvokeResponse::Ok(InvokeBody::Raw(v)) => {
|
||||||
responder_eval(
|
if cfg!(target_os = "macos") || cfg!(target_os = "ios") {
|
||||||
&window,
|
responder_eval(
|
||||||
format_callback_result(Result::<_, ()>::Ok(v), callback, error),
|
&window,
|
||||||
error,
|
format_callback_result(Result::<_, ()>::Ok(v), callback, error),
|
||||||
);
|
error,
|
||||||
if cfg!(target_os = "macos") {
|
);
|
||||||
} else {
|
} else {
|
||||||
let _ =
|
let _ =
|
||||||
Channel::from_ipc(window.clone(), callback).send(InvokeBody::Raw(v.clone()));
|
Channel::from_ipc(window.clone(), callback).send(InvokeBody::Raw(v.clone()));
|
||||||
|
@ -1029,7 +1029,7 @@ impl<R: Runtime> WindowManager<R> {
|
|||||||
app_handle.clone(),
|
app_handle.clone(),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
#[cfg(any(target_os = "macos", not(ipc_custom_protocol)))]
|
#[cfg(any(target_os = "macos", target_os = "ios", not(ipc_custom_protocol)))]
|
||||||
{
|
{
|
||||||
pending.ipc_handler = Some(crate::ipc::protocol::message_handler(self.clone()));
|
pending.ipc_handler = Some(crate::ipc::protocol::message_handler(self.clone()));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user