|
import { useQuery } from "@tanstack/react-query";
|
|
import React from "react";
|
|
import posthog from "posthog-js";
|
|
import { AxiosError } from "axios";
|
|
import { DEFAULT_SETTINGS, getLocalStorageSettings } from "#/services/settings";
|
|
import OpenHands from "#/api/open-hands";
|
|
|
|
const getSettingsQueryFn = async () => {
|
|
try {
|
|
const apiSettings = await OpenHands.getSettings();
|
|
|
|
if (apiSettings !== null) {
|
|
return {
|
|
LLM_MODEL: apiSettings.llm_model,
|
|
LLM_BASE_URL: apiSettings.llm_base_url,
|
|
AGENT: apiSettings.agent,
|
|
LANGUAGE: apiSettings.language,
|
|
CONFIRMATION_MODE: apiSettings.confirmation_mode,
|
|
SECURITY_ANALYZER: apiSettings.security_analyzer,
|
|
LLM_API_KEY: apiSettings.llm_api_key,
|
|
REMOTE_RUNTIME_RESOURCE_FACTOR:
|
|
apiSettings.remote_runtime_resource_factor,
|
|
};
|
|
}
|
|
|
|
return getLocalStorageSettings();
|
|
} catch (error) {
|
|
if (error instanceof AxiosError) {
|
|
if (error.response?.status === 404) {
|
|
return DEFAULT_SETTINGS;
|
|
}
|
|
}
|
|
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
export const useSettings = () => {
|
|
const query = useQuery({
|
|
queryKey: ["settings"],
|
|
queryFn: getSettingsQueryFn,
|
|
});
|
|
|
|
React.useEffect(() => {
|
|
if (query.data?.LLM_API_KEY) {
|
|
posthog.capture("user_activated");
|
|
}
|
|
}, [query.data?.LLM_API_KEY]);
|
|
|
|
return query;
|
|
};
|
|
|