( action: AppShortcutAction, event?: KeyboardEvent | null )
| 24 | } |
| 25 | |
| 26 | export async function dispatchAppShortcutAction( |
| 27 | action: AppShortcutAction, |
| 28 | event?: KeyboardEvent | null |
| 29 | ): Promise<void> { |
| 30 | if (shouldIgnoreAppShortcuts(event)) { |
| 31 | return |
| 32 | } |
| 33 | |
| 34 | switch (action) { |
| 35 | case 'close-tab': |
| 36 | closeActiveTab() |
| 37 | break |
| 38 | case 'next-tab': |
| 39 | useTabsStore.getState().activateNextTab() |
| 40 | break |
| 41 | case 'prev-tab': |
| 42 | useTabsStore.getState().activatePrevTab() |
| 43 | break |
| 44 | case 'new-chat': { |
| 45 | const page = await pagesService.createPage() |
| 46 | await pagesService.openPage(page.id) |
| 47 | break |
| 48 | } |
| 49 | case 'toggle-sidebar': |
| 50 | useLayoutStore.getState().toggleSidebar() |
| 51 | break |
| 52 | case 'global-search': { |
| 53 | const selectedText = getSearchPrefillSelection() |
| 54 | const globalSearchStore = useGlobalSearchStore.getState() |
| 55 | |
| 56 | if (selectedText) { |
| 57 | globalSearchStore.setQuery(selectedText) |
| 58 | } |
| 59 | |
| 60 | useLayoutStore.getState().revealPanel('search') |
| 61 | globalSearchStore.requestFocus() |
| 62 | |
| 63 | if (selectedText) { |
| 64 | globalSearchStore.triggerSearch() |
| 65 | } |
| 66 | break |
| 67 | } |
| 68 | } |
| 69 | } |
| 70 | |
| 71 | export async function dispatchForwardedShortcutAction( |
| 72 | action: ForwardedShortcutAction |
no test coverage detected