chore: Throw a 404 instead of returning defaults if settings does not exist (#6704)

This commit is contained in:
sp.wack 2025-02-12 22:46:15 +04:00 committed by GitHub
parent 7e359eda4a
commit ba599c7dd6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 7 deletions

View File

@ -5,9 +5,10 @@ import { LoadingSpinner } from "../../loading-spinner";
import { ModalBackdrop } from "../modal-backdrop";
import { SettingsForm } from "./settings-form";
import { Settings } from "#/types/settings";
import { DEFAULT_SETTINGS } from "#/services/settings";
interface SettingsModalProps {
settings: Settings;
settings?: Settings;
onClose: () => void;
}
@ -38,7 +39,7 @@ export function SettingsModal({ onClose, settings }: SettingsModalProps) {
)}
{aiConfigOptions.data && (
<SettingsForm
settings={settings}
settings={settings || DEFAULT_SETTINGS}
models={aiConfigOptions.data?.models}
agents={aiConfigOptions.data?.agents}
securityAnalyzers={aiConfigOptions.data?.securityAnalyzers}

View File

@ -1,7 +1,6 @@
import { useQuery } from "@tanstack/react-query";
import React from "react";
import posthog from "posthog-js";
import { DEFAULT_SETTINGS } from "#/services/settings";
import OpenHands from "#/api/open-hands";
import { useAuth } from "#/context/auth-context";
import { useConfig } from "#/hooks/query/use-config";
@ -31,10 +30,11 @@ export const useSettings = () => {
const query = useQuery({
queryKey: ["settings"],
queryFn: getSettingsQueryFn,
initialData: DEFAULT_SETTINGS,
staleTime: 0,
retry: false,
enabled: config?.APP_MODE !== "saas" || githubTokenIsSet,
// Only retry if the error is not a 404 because we
// would want to show the modal immediately if the
// settings are not found
retry: (_, error) => error.status !== 404,
meta: {
disableToast: true,
},

View File

@ -23,7 +23,7 @@ class FileSettingsStore(SettingsStore):
settings = Settings(**kwargs)
return settings
except FileNotFoundError:
return Settings.from_config()
return None
async def store(self, settings: Settings):
json_str = settings.model_dump_json(context={'expose_secrets': True})