From be497a34edbeda60e3a448f66e0329e7e3b95cc2 Mon Sep 17 00:00:00 2001 From: Robert Brennan Date: Mon, 30 Dec 2024 11:09:23 -0500 Subject: [PATCH 1/6] return 404 when settings not found --- openhands/server/routes/settings.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/openhands/server/routes/settings.py b/openhands/server/routes/settings.py index 9cb7d0105c26..4f82811a8df9 100644 --- a/openhands/server/routes/settings.py +++ b/openhands/server/routes/settings.py @@ -12,7 +12,8 @@ SettingsStoreImpl = get_impl(SettingsStore, openhands_config.settings_store_class) # type: ignore ConversationStoreImpl = get_impl( - ConversationStore, openhands_config.conversation_store_class # type: ignore + ConversationStore, # type: ignore + openhands_config.conversation_store_class, # type: ignore ) @@ -26,9 +27,13 @@ async def load_settings( try: settings_store = await SettingsStoreImpl.get_instance(config, github_token) settings = await settings_store.load() - if settings: - # For security reasons we don't ever send the api key to the client - settings.llm_api_key = None + if not settings: + return JSONResponse( + status_code=status.HTTP_404_NOT_FOUND, + content={'error': 'Settings not found'}, + ) + # For security reasons we don't ever send the api key to the client + settings.llm_api_key = None return settings except Exception as e: logger.warning(f'Invalid token: {e}') From dfb1731922a4a39cea0ed273234bf673aab1ca73 Mon Sep 17 00:00:00 2001 From: Robert Brennan Date: Mon, 30 Dec 2024 11:32:58 -0500 Subject: [PATCH 2/6] fix up settings prompt --- .../components/features/sidebar/sidebar.tsx | 14 +++++--- frontend/src/services/settings.ts | 35 ++++++++++++------- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/frontend/src/components/features/sidebar/sidebar.tsx b/frontend/src/components/features/sidebar/sidebar.tsx index 5afc1aa9d24e..da6a132514d0 100644 --- a/frontend/src/components/features/sidebar/sidebar.tsx +++ b/frontend/src/components/features/sidebar/sidebar.tsx @@ -21,10 +21,11 @@ export function Sidebar() { const { data: isAuthed } = useIsAuthed(); const { logout } = useAuth(); - const { settingsAreUpToDate } = useSettings(); + const { settingsAreUpToDate, settings } = useSettings(); const [accountSettingsModalOpen, setAccountSettingsModalOpen] = React.useState(false); + const [settingsModalIsOpen, setSettingsModalIsOpen] = React.useState(false); const [startNewProjectModalIsOpen, setStartNewProjectModalIsOpen] = React.useState(false); @@ -36,6 +37,12 @@ export function Sidebar() { } }, [user.isError]); + React.useEffect(() => { + if (!settings || !settingsAreUpToDate) { + setSettingsModalIsOpen(true); + } + }, [settings, settingsAreUpToDate]); + const handleAccountSettingsModalClose = () => { // If the user closes the modal without connecting to GitHub, // we need to log them out to clear the invalid token from the @@ -49,9 +56,6 @@ export function Sidebar() { setStartNewProjectModalIsOpen(true); }; - const showSettingsModal = - isAuthed && (!settingsAreUpToDate || settingsModalIsOpen); - return ( <>