From aacf95cf76ca67deefe8b7a7baf6e45c5e737d38 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 11 Apr 2026 16:08:16 -0600 Subject: [PATCH] refac --- src/lib/components/chat/Chat.svelte | 48 +++++++++++++++++------------ src/lib/stores/index.ts | 4 +-- src/routes/+layout.svelte | 7 ++++- 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index f1bd5a66e1..5b96f82c2f 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1226,31 +1226,39 @@ showControls.set(true); } - // Consume one-shot desktop event (e.g. Spotlight query + attachments) + // Consume one-shot desktop event (e.g. Spotlight query, call shortcut) if ($desktopEvent) { - const { query, files: eventFiles } = $desktopEvent; + const event = $desktopEvent; desktopEvent.set(null); - // Attach screenshot images from desktop (e.g. Spotlight region capture) - if (eventFiles?.length) { - for (const ef of eventFiles) { - files = [ - ...files, - { - type: 'image', - url: ef.dataUrl, - name: ef.name - } - ]; - } - } + if (event.type === 'call') { + showCallOverlay.set(true); + showControls.set(true); + } else if (event.type === 'query') { + const query = event.data?.query; + const eventFiles = event.data?.files; - if (query || eventFiles?.length) { - if (query) { - messageInput?.setText(query); + // Attach screenshot images from desktop (e.g. Spotlight region capture) + if (eventFiles?.length) { + for (const ef of eventFiles) { + files = [ + ...files, + { + type: 'image', + url: ef.dataUrl, + name: ef.name + } + ]; + } + } + + if (query || eventFiles?.length) { + if (query) { + messageInput?.setText(query); + } + await tick(); + submitHandler(query || ''); } - await tick(); - submitHandler(query || ''); } } else if ($page.url.searchParams.get('q')) { const q = $page.url.searchParams.get('q') ?? ''; diff --git a/src/lib/stores/index.ts b/src/lib/stores/index.ts index edcea62137..05bd83ea1f 100644 --- a/src/lib/stores/index.ts +++ b/src/lib/stores/index.ts @@ -116,8 +116,8 @@ export const temporaryChatEnabled = writable(false); // Set by +layout.svelte, consumed and cleared by Chat.svelte. export type DesktopEventFile = { name: string; mimeType: string; dataUrl: string }; export type DesktopEvent = { - query?: string; - files?: DesktopEventFile[]; + type: string; + data?: any; }; export const desktopEvent: Writable = writable(null); export const scrollPaginationEnabled = writable(false); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 8b4f5b3e36..252e1cf7a8 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -712,7 +712,12 @@ return; } if (event.type === 'query' && (event.data?.query || event.data?.files?.length)) { - desktopEvent.set({ query: event.data.query, files: event.data.files }); + desktopEvent.set(event); + await goto('/'); + return; + } + if (event.type === 'call') { + desktopEvent.set(event); await goto('/'); return; }