You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
// frontend/lib/hooks/useSettings.ts — 설정 SWR 훅(시스템·LLM·프로필·토큰)
|
|
"use client";
|
|
import useSWR from "swr";
|
|
import type { LlmConfig, Me, SystemConfig, TokenInfo } from "@/lib/types";
|
|
import { settingsApi } from "@/lib/settings/api";
|
|
|
|
export function useSystemConfig() {
|
|
const { data, error, isLoading, mutate } = useSWR<SystemConfig>(
|
|
"/api/settings/system",
|
|
() => settingsApi.system(),
|
|
{ revalidateOnFocus: false },
|
|
);
|
|
return { data, error, isLoading, refresh: mutate };
|
|
}
|
|
|
|
export function useLlmConfig() {
|
|
const { data, error, isLoading, mutate } = useSWR<LlmConfig>(
|
|
"/api/settings/llm",
|
|
() => settingsApi.getLlm(),
|
|
{ revalidateOnFocus: false },
|
|
);
|
|
return { data, error, isLoading, refresh: mutate };
|
|
}
|
|
|
|
export function useMe() {
|
|
const { data, error, isLoading, mutate } = useSWR<Me>("/api/me", () => settingsApi.me(), {
|
|
revalidateOnFocus: false,
|
|
shouldRetryOnError: false,
|
|
});
|
|
return { data, error, isLoading, refresh: mutate };
|
|
}
|
|
|
|
export function useTokens() {
|
|
const { data, error, isLoading, mutate } = useSWR<TokenInfo[]>(
|
|
"/api/me/tokens",
|
|
() => settingsApi.listTokens(),
|
|
{ revalidateOnFocus: false, shouldRetryOnError: false },
|
|
);
|
|
return { data, error, isLoading, refresh: mutate };
|
|
}
|