feat(plugins): inject API on window.__TAURI__ (#383)

This commit is contained in:
Lucas Fernandes Nogueira
2023-05-23 14:20:14 -03:00
committed by GitHub
parent 3c8577bc9a
commit b131bc8f7c
78 changed files with 754 additions and 337 deletions
+15 -8
View File
@@ -8,7 +8,14 @@
* @module
*/
import { invoke, transformCallback } from "@tauri-apps/api/tauri";
declare global {
interface Window {
__TAURI_INVOKE__: <T>(cmd: string, args?: unknown) => Promise<T>;
__TAURI__: {
transformCallback: <T>(cb: (payload: T) => void) => number;
};
}
}
export type ShortcutHandler = (shortcut: string) => void;
@@ -31,9 +38,9 @@ async function register(
shortcut: string,
handler: ShortcutHandler
): Promise<void> {
return await invoke("plugin:globalShortcut|register", {
return await window.__TAURI_INVOKE__("plugin:globalShortcut|register", {
shortcut,
handler: transformCallback(handler),
handler: window.__TAURI__.transformCallback(handler),
});
}
@@ -56,9 +63,9 @@ async function registerAll(
shortcuts: string[],
handler: ShortcutHandler
): Promise<void> {
return await invoke("plugin:globalShortcut|register_all", {
return await window.__TAURI_INVOKE__("plugin:globalShortcut|register_all", {
shortcuts,
handler: transformCallback(handler),
handler: window.__TAURI__.transformCallback(handler),
});
}
@@ -78,7 +85,7 @@ async function registerAll(
* @since 1.0.0
*/
async function isRegistered(shortcut: string): Promise<boolean> {
return await invoke("plugin:globalShortcut|is_registered", {
return await window.__TAURI_INVOKE__("plugin:globalShortcut|is_registered", {
shortcut,
});
}
@@ -96,7 +103,7 @@ async function isRegistered(shortcut: string): Promise<boolean> {
* @since 1.0.0
*/
async function unregister(shortcut: string): Promise<void> {
return await invoke("plugin:globalShortcut|unregister", {
return await window.__TAURI_INVOKE__("plugin:globalShortcut|unregister", {
shortcut,
});
}
@@ -112,7 +119,7 @@ async function unregister(shortcut: string): Promise<void> {
* @since 1.0.0
*/
async function unregisterAll(): Promise<void> {
return await invoke("plugin:globalShortcut|unregister_all");
return await window.__TAURI_INVOKE__("plugin:globalShortcut|unregister_all");
}
export { register, registerAll, isRegistered, unregister, unregisterAll };
+1
View File
@@ -0,0 +1 @@
if("__TAURI__"in window){var __TAURI_GLOBALSHORTCUT__=function(_){"use strict";return _.isRegistered=async function(_){return await window.__TAURI_INVOKE__("plugin:globalShortcut|is_registered",{shortcut:_})},_.register=async function(_,t){return await window.__TAURI_INVOKE__("plugin:globalShortcut|register",{shortcut:_,handler:window.__TAURI__.transformCallback(t)})},_.registerAll=async function(_,t){return await window.__TAURI_INVOKE__("plugin:globalShortcut|register_all",{shortcuts:_,handler:window.__TAURI__.transformCallback(t)})},_.unregister=async function(_){return await window.__TAURI_INVOKE__("plugin:globalShortcut|unregister",{shortcut:_})},_.unregisterAll=async function(){return await window.__TAURI_INVOKE__("plugin:globalShortcut|unregister_all")},_}({});Object.defineProperty(window.__TAURI__,"globalShortcut",{value:__TAURI_GLOBALSHORTCUT__})}
+1
View File
@@ -283,6 +283,7 @@ impl Builder {
pub fn build<R: Runtime>(self) -> TauriPlugin<R> {
let handler = self.handler;
PluginBuilder::new("globalShortcut")
.js_init_script(include_str!("api-iife.js").to_string())
.invoke_handler(tauri::generate_handler![
register,
register_all,