diff --git a/web/src/components/save/Omnibox.svelte b/web/src/components/save/Omnibox.svelte index c9a07167..abb358e2 100644 --- a/web/src/components/save/Omnibox.svelte +++ b/web/src/components/save/Omnibox.svelte @@ -79,7 +79,7 @@ if (!isBotCheckOngoing) { await tick(); // wait for button to render - savingHandler($link); + savingHandler({ url: $link }); } } }; @@ -98,7 +98,7 @@ } if (e.key === "Enter" && validLink($link) && isFocused) { - savingHandler($link); + savingHandler({ url: $link }); } if (["Escape", "Clear"].includes(e.key) && isFocused) { diff --git a/web/src/components/save/buttons/DownloadButton.svelte b/web/src/components/save/buttons/DownloadButton.svelte index cf4ffba9..3d73ac8b 100644 --- a/web/src/components/save/buttons/DownloadButton.svelte +++ b/web/src/components/save/buttons/DownloadButton.svelte @@ -58,7 +58,7 @@ {disabled} on:click={() => { hapticSwitch(); - savingHandler(url); + savingHandler({ url }); }} aria-label={buttonAltText} > diff --git a/web/src/lib/api/saving-handler.ts b/web/src/lib/api/saving-handler.ts index 2277256a..800f904a 100644 --- a/web/src/lib/api/saving-handler.ts +++ b/web/src/lib/api/saving-handler.ts @@ -10,6 +10,7 @@ import { downloadButtonState } from "$lib/state/omnibox"; import { createSavePipeline } from "$lib/queen-bee/queue"; import type { DialogInfo } from "$lib/types/dialog"; +import type { CobaltSaveRequestBody } from "$lib/types/api"; const defaultErrorPopup: DialogInfo = { id: "save-error", @@ -17,7 +18,7 @@ const defaultErrorPopup: DialogInfo = { meowbalt: "error", }; -export const savingHandler = async (link: string) => { +export const savingHandler = async ({ url, request }: { url?: string, request?: CobaltSaveRequestBody }) => { downloadButtonState.set("think"); const errorButtons = [ @@ -30,8 +31,13 @@ export const savingHandler = async (link: string) => { const getSetting = lazySettingGetter(get(settings)); - const request = { - url: link, + if (!request && !url) return; + + const selectedRequest = request || { + // pointing typescript to the fact that + // url is either present or not used at all, + // aka in cases when request is present + url: url!, alwaysProxy: getSetting("save", "alwaysProxy"), localProcessing: getSetting("save", "localProcessing"), @@ -53,7 +59,7 @@ export const savingHandler = async (link: string) => { allowH265: getSetting("save", "allowH265"), } - const response = await API.request(request); + const response = await API.request(selectedRequest); if (!response) { downloadButtonState.set("error");