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
159 lines
3.8 KiB
Rust
159 lines
3.8 KiB
Rust
// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
use tauri_utils::{Theme, config::BundleType};
|
|
|
|
use crate::{
|
|
AppHandle, Manager, ResourceId, Runtime, Webview, command,
|
|
plugin::{Builder, TauriPlugin},
|
|
};
|
|
|
|
#[command(root = "crate")]
|
|
pub fn version<R: Runtime>(app: AppHandle<R>) -> String {
|
|
app.package_info().version.to_string()
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub fn name<R: Runtime>(app: AppHandle<R>) -> String {
|
|
app.package_info().name.clone()
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub fn tauri_version() -> &'static str {
|
|
crate::VERSION
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub fn identifier<R: Runtime>(app: AppHandle<R>) -> String {
|
|
app.config().identifier.clone()
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
#[allow(unused_variables)]
|
|
pub fn app_show<R: Runtime>(app: AppHandle<R>) -> crate::Result<()> {
|
|
#[cfg(target_os = "macos")]
|
|
app.show()?;
|
|
Ok(())
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
#[allow(unused_variables)]
|
|
pub fn app_hide<R: Runtime>(app: AppHandle<R>) -> crate::Result<()> {
|
|
#[cfg(target_os = "macos")]
|
|
app.hide()?;
|
|
Ok(())
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub fn exit<R: Runtime>(app: AppHandle<R>, code: i32) {
|
|
app.exit(code)
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
#[allow(unused_variables)]
|
|
pub async fn fetch_data_store_identifiers<R: Runtime>(
|
|
app: AppHandle<R>,
|
|
) -> crate::Result<Vec<[u8; 16]>> {
|
|
#[cfg(target_vendor = "apple")]
|
|
return app.fetch_data_store_identifiers().await;
|
|
#[cfg(not(target_vendor = "apple"))]
|
|
return Ok(Vec::new());
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
#[allow(unused_variables)]
|
|
pub async fn remove_data_store<R: Runtime>(app: AppHandle<R>, uuid: [u8; 16]) -> crate::Result<()> {
|
|
#[cfg(target_vendor = "apple")]
|
|
app.remove_data_store(uuid).await?;
|
|
#[cfg(not(target_vendor = "apple"))]
|
|
let _ = uuid;
|
|
Ok(())
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub fn default_window_icon<R: Runtime>(
|
|
webview: Webview<R>,
|
|
app: AppHandle<R>,
|
|
) -> Option<ResourceId> {
|
|
app.default_window_icon().cloned().map(|icon| {
|
|
let mut resources_table = webview.resources_table();
|
|
resources_table.add(icon.to_owned())
|
|
})
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub async fn set_app_theme<R: Runtime>(app: AppHandle<R>, theme: Option<Theme>) {
|
|
app.set_theme(theme);
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub async fn set_dock_visibility<R: Runtime>(
|
|
app: AppHandle<R>,
|
|
visible: bool,
|
|
) -> crate::Result<()> {
|
|
#[cfg(target_os = "macos")]
|
|
{
|
|
let mut focused_window = None;
|
|
for window in app.manager.windows().into_values() {
|
|
if window.is_focused().unwrap_or_default() {
|
|
focused_window.replace(window);
|
|
break;
|
|
}
|
|
}
|
|
|
|
app.set_dock_visibility(visible)?;
|
|
|
|
// retain focus
|
|
if let Some(focused_window) = focused_window {
|
|
let _ = focused_window.set_focus();
|
|
}
|
|
}
|
|
#[cfg(not(target_os = "macos"))]
|
|
let (_app, _visible) = (app, visible);
|
|
Ok(())
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub fn bundle_type() -> Option<BundleType> {
|
|
tauri_utils::platform::bundle_type()
|
|
}
|
|
|
|
#[command(root = "crate")]
|
|
pub fn supports_multiple_windows<R: Runtime>(app: AppHandle<R>) -> bool {
|
|
app.supports_multiple_windows()
|
|
}
|
|
|
|
pub fn init<R: Runtime>() -> TauriPlugin<R> {
|
|
Builder::new("app")
|
|
.invoke_handler(crate::generate_handler![
|
|
#![plugin(app)]
|
|
version,
|
|
name,
|
|
tauri_version,
|
|
identifier,
|
|
app_show,
|
|
app_hide,
|
|
exit,
|
|
fetch_data_store_identifiers,
|
|
remove_data_store,
|
|
default_window_icon,
|
|
set_app_theme,
|
|
set_dock_visibility,
|
|
bundle_type,
|
|
supports_multiple_windows,
|
|
])
|
|
.setup(|_app, _api| {
|
|
#[cfg(target_os = "android")]
|
|
{
|
|
let handle = _api.register_android_plugin("app.tauri", "AppPlugin")?;
|
|
_app.manage(AppPlugin(handle));
|
|
}
|
|
Ok(())
|
|
})
|
|
.build()
|
|
}
|
|
|
|
#[cfg(target_os = "android")]
|
|
pub(crate) struct AppPlugin<R: Runtime>(pub crate::plugin::PluginHandle<R>);
|