Some checks failed
Audit / audit-js (push) Failing after 0s
bench / bench (map[os:ubuntu-latest runner:xvfb-run --auto-servernum target:x86_64-unknown-linux-gnu], nightly) (push) Failing after 0s
covector version or publish / run-integration-tests (ubuntu-latest) (push) Failing after 0s
Audit / audit-rust (push) Failing after 0s
test `@tauri-apps/cli` / test (ubuntu-latest) (push) Failing after 0s
test `tauri-cli` / test (map[os:ubuntu-latest target:x86_64-unknown-linux-gnu]) (push) Failing after 0s
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:ubuntu-latest target:x86_64-unknown-linux-gnu toolchain:1.90]) (push) Failing after 0s
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:ubuntu-latest target:x86_64-unknown-linux-gnu toolchain:1.90]) (push) Failing after 0s
test core / test (map[args:--no-default-features key:no-default], map[cargo:cross command:build os:ubuntu-latest target:aarch64-linux-android toolchain:1.90]) (push) Failing after 0s
deploy schema worker / deploy (push) Failing after 0s
lint rust / clippy (map[cargo:cargo include: os:ubuntu-latest target:x86_64-unknown-linux-gnu]) (push) Failing after 0s
lint rust / clippy (map[cargo:cross include:--package api os:ubuntu-latest target:aarch64-linux-android]) (push) Failing after 0s
supply chain health status / check rust dependencies with cargo vet (push) Failing after 0s
test `@tauri-apps/api` e2e (mobile) / android (push) Failing after 0s
test `@tauri-apps/api` e2e / test (map[name:Linux os:ubuntu-latest]) (push) Failing after 0s
test core / test (map[args:--all-features key:all], map[cargo:cross command:build os:ubuntu-latest target:aarch64-linux-android toolchain:1.90]) (push) Failing after 0s
Udeps / changes (push) Failing after 0s
Udeps / setup (push) Has been skipped
Udeps / udeps (push) Has been skipped
bench / bench (map[os:macos-latest runner: target:aarch64-apple-darwin], nightly) (push) Has been cancelled
bench / bench (map[os:windows-latest runner: target:x86_64-pc-windows-msvc], nightly) (push) Has been cancelled
covector version or publish / run-integration-tests (macos-latest) (push) Has been cancelled
covector version or publish / run-integration-tests (windows-latest) (push) Has been cancelled
covector version or publish / version-or-publish (push) Has been cancelled
test `@tauri-apps/cli` / test (macos-latest) (push) Has been cancelled
test `tauri-cli` / test (map[args:--no-default-features --features native-tls-vendored os:windows-latest restore-only:true target:aarch64-pc-windows-msvc]) (push) Has been cancelled
test `tauri-cli` / test (map[os:macos-latest target:x86_64-apple-darwin]) (push) Has been cancelled
test `tauri-cli` / test (map[os:windows-latest target:x86_64-pc-windows-msvc]) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:build os:macos-latest target:aarch64-apple-ios toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:macos-14 target:aarch64-apple-darwin toolchain:1.90]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include: os:macos-latest target:aarch64-apple-darwin]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include: os:windows-latest target:x86_64-pc-windows-msvc]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include:--package api os:macos-latest target:aarch64-apple-ios]) (push) Has been cancelled
test `@tauri-apps/api` e2e (mobile) / ios (push) Has been cancelled
test `@tauri-apps/api` e2e / test (map[name:Windows os:windows-latest]) (push) Has been cancelled
test `@tauri-apps/api` e2e / test (map[name:macOS os:macos-latest]) (push) Has been cancelled
test `@tauri-apps/cli` / test (windows-latest) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:windows-latest target:x86_64-pc-windows-msvc toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:build os:macos-latest target:aarch64-apple-ios toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:macos-14 target:aarch64-apple-darwin toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:windows-latest target:x86_64-pc-windows-msvc toolchain:1.90]) (push) Has been cancelled
115 lines
2.9 KiB
JavaScript
115 lines
2.9 KiB
JavaScript
// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
;(function () {
|
|
function uid() {
|
|
return window.crypto.getRandomValues(new Uint32Array(1))[0]
|
|
}
|
|
|
|
const osName = __TEMPLATE_os_name__
|
|
const protocolScheme = __TEMPLATE_protocol_scheme__
|
|
|
|
Object.defineProperty(window.__TAURI_INTERNALS__, 'convertFileSrc', {
|
|
value: function (filePath, protocol = 'asset') {
|
|
const path = encodeURIComponent(filePath)
|
|
return osName === 'windows' || osName === 'android'
|
|
? `${protocolScheme}://${protocol}.localhost/${path}`
|
|
: `${protocol}://localhost/${path}`
|
|
}
|
|
})
|
|
|
|
const callbacks = new Map()
|
|
|
|
function registerCallback(callback, once) {
|
|
const identifier = uid()
|
|
callbacks.set(identifier, (data) => {
|
|
if (once) {
|
|
unregisterCallback(identifier)
|
|
}
|
|
return callback && callback(data)
|
|
})
|
|
return identifier
|
|
}
|
|
|
|
function unregisterCallback(id) {
|
|
callbacks.delete(id)
|
|
}
|
|
|
|
function runCallback(id, data) {
|
|
const callback = callbacks.get(id)
|
|
if (callback) {
|
|
callback(data)
|
|
} else {
|
|
console.warn(
|
|
`[TAURI] Couldn't find callback id ${id}. This might happen when the app is reloaded while Rust is running an asynchronous operation.`
|
|
)
|
|
}
|
|
}
|
|
|
|
// Maybe let's rename it to `registerCallback`?
|
|
Object.defineProperty(window.__TAURI_INTERNALS__, 'transformCallback', {
|
|
value: registerCallback
|
|
})
|
|
|
|
Object.defineProperty(window.__TAURI_INTERNALS__, 'unregisterCallback', {
|
|
value: unregisterCallback
|
|
})
|
|
|
|
Object.defineProperty(window.__TAURI_INTERNALS__, 'runCallback', {
|
|
value: runCallback
|
|
})
|
|
|
|
// This is just for the debugging purposes
|
|
Object.defineProperty(window.__TAURI_INTERNALS__, 'callbacks', {
|
|
value: callbacks
|
|
})
|
|
|
|
const ipcQueue = []
|
|
let isWaitingForIpc = false
|
|
|
|
function waitForIpc() {
|
|
if ('ipc' in window.__TAURI_INTERNALS__) {
|
|
for (const action of ipcQueue) {
|
|
action()
|
|
}
|
|
} else {
|
|
setTimeout(waitForIpc, 50)
|
|
}
|
|
}
|
|
|
|
Object.defineProperty(window.__TAURI_INTERNALS__, 'invoke', {
|
|
value: function (cmd, payload = {}, options) {
|
|
return new Promise(function (resolve, reject) {
|
|
const callback = registerCallback((r) => {
|
|
resolve(r)
|
|
unregisterCallback(error)
|
|
}, true)
|
|
const error = registerCallback((e) => {
|
|
reject(e)
|
|
unregisterCallback(callback)
|
|
}, true)
|
|
|
|
const action = () => {
|
|
window.__TAURI_INTERNALS__.ipc({
|
|
cmd,
|
|
callback,
|
|
error,
|
|
payload,
|
|
options
|
|
})
|
|
}
|
|
if ('ipc' in window.__TAURI_INTERNALS__) {
|
|
action()
|
|
} else {
|
|
ipcQueue.push(action)
|
|
if (!isWaitingForIpc) {
|
|
waitForIpc()
|
|
isWaitingForIpc = true
|
|
}
|
|
}
|
|
})
|
|
}
|
|
})
|
|
})()
|