From 032aa43f5257d40c15dba5cb2b3c3896bde8c722 Mon Sep 17 00:00:00 2001 From: Artur Pata Date: Thu, 6 Mar 2025 14:16:40 +0200 Subject: [PATCH] Unify logic, refactor names --- assets/js/dashboard/api.ts | 19 ++++++++++--------- .../js/dashboard/stats/graph/stats-export.js | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/assets/js/dashboard/api.ts b/assets/js/dashboard/api.ts index e98a3ee7efaa..5b863cd42af3 100644 --- a/assets/js/dashboard/api.ts +++ b/assets/js/dashboard/api.ts @@ -15,7 +15,7 @@ export class ApiError extends Error { } } -function serialize(obj: Record) { +export function serialize(obj: Record) { const str: string[] = [] /* eslint-disable-next-line no-prototype-builtins */ for (const p in obj) @@ -34,7 +34,7 @@ export function cancelAll() { abortController = new AbortController() } -export function serializeQuery( +export function queryToSearchParams( query: DashboardQuery, extraQuery: unknown[] = [] ) { @@ -71,7 +71,7 @@ export function serializeQuery( Object.assign(queryObj, ...extraQuery) - return serialize(queryObj) + return queryObj } function getHeaders(): Record { @@ -87,7 +87,7 @@ async function handleApiResponse(response: Response) { return payload } -function getSharedLinkQueryParams(): Record { +function getSharedLinkSearchParams(): Record { return SHARED_LINK_AUTH ? { auth: SHARED_LINK_AUTH } : {} } @@ -96,11 +96,13 @@ export async function get( query?: DashboardQuery, ...extraQueryParams: unknown[] ) { - const sharedLinkParams = getSharedLinkQueryParams() + const sharedLinkParams = getSharedLinkSearchParams() const queryString = query - ? serializeQuery(query, [...extraQueryParams, sharedLinkParams]) - : new URLSearchParams(sharedLinkParams).toString() + ? serialize( + queryToSearchParams(query, [...extraQueryParams, sharedLinkParams]) + ) + : serialize(sharedLinkParams) const response = await fetch(queryString ? `${url}?${queryString}` : url, { signal: abortController.signal, @@ -118,8 +120,7 @@ export const mutation = async < | { body: TBody; method: 'PATCH' | 'PUT' | 'POST' } | { method: 'DELETE' } ) => { - const sharedLinkParams = getSharedLinkQueryParams() - const queryString = new URLSearchParams(sharedLinkParams).toString() + const queryString = serialize(getSharedLinkSearchParams()) const fetchOptions = options.method === 'DELETE' ? {} diff --git a/assets/js/dashboard/stats/graph/stats-export.js b/assets/js/dashboard/stats/graph/stats-export.js index 1b1dd5b3b0d9..3bbd867aa693 100644 --- a/assets/js/dashboard/stats/graph/stats-export.js +++ b/assets/js/dashboard/stats/graph/stats-export.js @@ -34,8 +34,8 @@ export default function StatsExport() { function renderExportLink() { const interval = getCurrentInterval(site, query) - const queryParams = api.serializeQuery(query, [{ interval, comparison: undefined }]) - const endpoint = `/${encodeURIComponent(site.domain)}/export${queryParams}` + const queryParams = api.serialize(api.queryToSearchParams(query, [{ interval, comparison: undefined }])) + const endpoint = `/${encodeURIComponent(site.domain)}/export?${queryParams}` return (