From 2a559aa6617ee2a50a2e5253cfa92aaf9d0c3b9c Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 18 Sep 2025 11:32:21 -0700 Subject: [PATCH] Replaced server action with api route. --- .../getConfig.ts => api/config/route.ts} | 25 ++++++++----------- src/components/hooks/useConfig.ts | 19 ++++++++++++-- 2 files changed, 27 insertions(+), 17 deletions(-) rename src/app/{actions/getConfig.ts => api/config/route.ts} (55%) diff --git a/src/app/actions/getConfig.ts b/src/app/api/config/route.ts similarity index 55% rename from src/app/actions/getConfig.ts rename to src/app/api/config/route.ts index 534c008e..7fa9ce8e 100644 --- a/src/app/actions/getConfig.ts +++ b/src/app/api/config/route.ts @@ -1,19 +1,14 @@ -'use server'; +import { parseRequest } from '@/lib/request'; +import { json } from '@/lib/response'; -export type Config = { - cloudMode: boolean; - cloudUrl?: string; - faviconUrl?: string; - linksUrl?: string; - pixelsUrl?: string; - privateMode: boolean; - telemetryDisabled: boolean; - trackerScriptName?: string; - updatesDisabled: boolean; -}; +export async function GET(request: Request) { + const { error } = await parseRequest(request, null, { skipAuth: true }); -export async function getConfig(): Promise { - return { + if (error) { + return error(); + } + + return json({ cloudMode: !!process.env.CLOUD_URL, cloudUrl: process.env.CLOUD_URL, faviconUrl: process.env.FAVICON_URL, @@ -23,5 +18,5 @@ export async function getConfig(): Promise { telemetryDisabled: !!process.env.DISABLE_TELEMETRY, trackerScriptName: process.env.TRACKER_SCRIPT_NAME, updatesDisabled: !!process.env.DISABLE_UPDATES, - }; + }); } diff --git a/src/components/hooks/useConfig.ts b/src/components/hooks/useConfig.ts index 46c815d6..3fff832f 100644 --- a/src/components/hooks/useConfig.ts +++ b/src/components/hooks/useConfig.ts @@ -1,12 +1,27 @@ import { useEffect } from 'react'; import { useApp, setConfig } from '@/store/app'; -import { getConfig, Config } from '@/app/actions/getConfig'; +import { useApi } from '@/components/hooks/useApi'; + +export type Config = { + cloudMode: boolean; + cloudUrl?: string; + faviconUrl?: string; + linksUrl?: string; + pixelsUrl?: string; + privateMode: boolean; + telemetryDisabled: boolean; + trackerScriptName?: string; + updatesDisabled: boolean; +}; export function useConfig(): Config { const { config } = useApp(); + const { get } = useApi(); async function loadConfig() { - setConfig(await getConfig()); + const { data } = await get(`/config`); + + setConfig(data); } useEffect(() => {