mirror of
https://github.com/wukko/cobalt.git
synced 2025-06-13 13:47:38 +02:00
web/api: send parameters to server only if they differ from defaults
This commit is contained in:
@ -4,41 +4,38 @@ import settings from "$lib/state/settings";
|
|||||||
import { getSession } from "$lib/api/session";
|
import { getSession } from "$lib/api/session";
|
||||||
import { currentApiURL } from "$lib/api/api-url";
|
import { currentApiURL } from "$lib/api/api-url";
|
||||||
import { apiOverrideWarning } from "$lib/api/safety-warning";
|
import { apiOverrideWarning } from "$lib/api/safety-warning";
|
||||||
|
|
||||||
import type { Optional } from "$lib/types/generic";
|
import type { Optional } from "$lib/types/generic";
|
||||||
import type { CobaltAPIResponse, CobaltErrorResponse } from "$lib/types/api";
|
import type { CobaltAPIResponse, CobaltErrorResponse } from "$lib/types/api";
|
||||||
|
import lazySettingGetter from "$lib/settings/lazy-get";
|
||||||
|
|
||||||
const request = async (url: string) => {
|
const request = async (url: string) => {
|
||||||
const currentSettings = get(settings);
|
const getSetting = lazySettingGetter(get(settings));
|
||||||
const saveSettings = currentSettings.save;
|
|
||||||
const privacySettings = currentSettings.privacy;
|
|
||||||
|
|
||||||
const request = {
|
const request = {
|
||||||
url,
|
url,
|
||||||
|
|
||||||
downloadMode: saveSettings.downloadMode,
|
downloadMode: getSetting("save", "downloadMode"),
|
||||||
|
audioBitrate: getSetting("save", "audioBitrate"),
|
||||||
|
audioFormat: getSetting("save", "audioFormat"),
|
||||||
|
tiktokFullAudio: getSetting("save", "tiktokFullAudio"),
|
||||||
|
youtubeDubBrowserLang: getSetting("save", "youtubeDubBrowserLang"),
|
||||||
|
|
||||||
audioBitrate: saveSettings.audioBitrate,
|
youtubeVideoCodec: getSetting("save", "youtubeVideoCodec"),
|
||||||
audioFormat: saveSettings.audioFormat,
|
videoQuality: getSetting("save", "videoQuality"),
|
||||||
tiktokFullAudio: saveSettings.tiktokFullAudio,
|
|
||||||
youtubeDubBrowserLang: saveSettings.youtubeDubBrowserLang,
|
|
||||||
|
|
||||||
youtubeVideoCodec: saveSettings.youtubeVideoCodec,
|
filenameStyle: getSetting("save", "filenameStyle"),
|
||||||
videoQuality: saveSettings.videoQuality,
|
disableMetadata: getSetting("save", "disableMetadata"),
|
||||||
|
|
||||||
filenameStyle: saveSettings.filenameStyle,
|
twitterGif: getSetting("save", "twitterGif"),
|
||||||
disableMetadata: saveSettings.disableMetadata,
|
tiktokH265: getSetting("save", "tiktokH265"),
|
||||||
|
|
||||||
twitterGif: saveSettings.twitterGif,
|
alwaysProxy: getSetting("privacy", "alwaysProxy"),
|
||||||
tiktokH265: saveSettings.tiktokH265,
|
|
||||||
|
|
||||||
alwaysProxy: privacySettings.alwaysProxy,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await apiOverrideWarning();
|
await apiOverrideWarning();
|
||||||
|
|
||||||
const usingCustomInstance = currentSettings.processing.enableCustomInstances
|
const usingCustomInstance = getSetting("processing", "enableCustomInstances")
|
||||||
&& currentSettings.processing.customInstanceURL;
|
&& getSetting("processing", "customInstanceURL");
|
||||||
const api = currentApiURL();
|
const api = currentApiURL();
|
||||||
// FIXME: rewrite this to allow custom instances to specify their own turnstile tokens
|
// FIXME: rewrite this to allow custom instances to specify their own turnstile tokens
|
||||||
const session = usingCustomInstance ? undefined : await getSession();
|
const session = usingCustomInstance ? undefined : await getSession();
|
||||||
|
14
web/src/lib/settings/lazy-get.ts
Normal file
14
web/src/lib/settings/lazy-get.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import type { CobaltSettings } from "$lib/types/settings";
|
||||||
|
import defaults from "./defaults";
|
||||||
|
|
||||||
|
export default function lazySettingGetter(settings: CobaltSettings) {
|
||||||
|
// Returns the setting value only if it differs from the default.
|
||||||
|
return <
|
||||||
|
Context extends Exclude<keyof CobaltSettings, 'schemaVersion'>,
|
||||||
|
Id extends keyof CobaltSettings[Context]
|
||||||
|
>(context: Context, key: Id) => {
|
||||||
|
if (defaults[context][key] !== settings[context][key]) {
|
||||||
|
return settings[context][key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user