electron_bridge: Declare Zulip Desktop binding types.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2023-10-11 17:17:19 -07:00 committed by Tim Abbott
parent c6618c9e55
commit 82e4250592
2 changed files with 46 additions and 0 deletions

View File

@ -98,6 +98,7 @@ EXEMPT_FILES = make_set(
"web/src/drafts_overlay_ui.js", "web/src/drafts_overlay_ui.js",
"web/src/dropdown_widget.js", "web/src/dropdown_widget.js",
"web/src/echo.js", "web/src/echo.js",
"web/src/electron_bridge.d.ts",
"web/src/emoji_picker.js", "web/src/emoji_picker.js",
"web/src/emojisets.ts", "web/src/emojisets.ts",
"web/src/favicon.ts", "web/src/favicon.ts",

45
web/src/electron_bridge.d.ts vendored Normal file
View File

@ -0,0 +1,45 @@
export type NotificationData = {
title: string;
dir: NotificationDirection;
lang: string;
body: string;
tag: string;
icon: string;
data: unknown;
close(): void;
};
export type ClipboardDecrypter = {
version: number;
key: Uint8Array;
pasted: Promise<string>;
};
export type ElectronBridge = {
send_event(eventName: string | symbol, ...args: unknown[]): boolean;
on_event(
eventName: "logout" | "show-keyboard-shortcuts" | "show-notification-settings",
listener: () => void,
): void;
on_event(
eventName: "send_notification_reply_message",
listener: (message_id: unknown, reply: unknown) => void,
): void;
new_notification?(
title: string,
options: NotificationOptions,
dispatch: (type: string, eventInit: EventInit) => boolean,
): NotificationData;
get_idle_on_system?(): boolean;
get_last_active_on_system?(): number;
get_send_notification_reply_message_supported?(): boolean;
set_send_notification_reply_message_supported?(value: boolean): void;
decrypt_clipboard?(version: number): ClipboardDecrypter;
};
declare global {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
interface Window {
electron_bridge?: ElectronBridge;
}
}