From 16125f2ae9e0298293aab59de2dec8210417b04f Mon Sep 17 00:00:00 2001 From: Bharath A V <157507162+AVBharath10@users.noreply.github.com> Date: Mon, 8 Dec 2025 20:20:51 +0530 Subject: [PATCH] Refactor(frontend): move settings-service into api folder and update (#11958) --- .../features/analytics/analytics-consent-form-modal.test.tsx | 2 +- .../components/features/home/repo-connector.test.tsx | 4 ++-- .../__tests__/components/features/sidebar/sidebar.test.tsx | 2 +- .../components/shared/modals/settings/settings-form.test.tsx | 2 +- frontend/__tests__/hooks/mutation/use-save-settings.test.tsx | 2 +- frontend/__tests__/routes/_oh.test.tsx | 2 +- frontend/__tests__/routes/app-settings.test.tsx | 2 +- frontend/__tests__/routes/git-settings.test.tsx | 2 +- frontend/__tests__/routes/home-screen.test.tsx | 2 +- frontend/__tests__/routes/llm-settings.test.tsx | 2 +- frontend/__tests__/routes/secrets-settings.test.tsx | 2 +- .../src/{ => api}/settings-service/settings-service.api.ts | 2 +- frontend/src/{ => api}/settings-service/settings.types.ts | 0 frontend/src/hooks/mutation/use-add-mcp-server.ts | 2 +- frontend/src/hooks/mutation/use-delete-mcp-server.ts | 2 +- frontend/src/hooks/mutation/use-save-settings.ts | 4 ++-- frontend/src/hooks/mutation/use-update-mcp-server.ts | 2 +- frontend/src/hooks/query/use-settings.ts | 2 +- frontend/src/mocks/handlers.ts | 2 +- 19 files changed, 20 insertions(+), 20 deletions(-) rename frontend/src/{ => api}/settings-service/settings-service.api.ts (93%) rename frontend/src/{ => api}/settings-service/settings.types.ts (100%) diff --git a/frontend/__tests__/components/features/analytics/analytics-consent-form-modal.test.tsx b/frontend/__tests__/components/features/analytics/analytics-consent-form-modal.test.tsx index b5746d6d25..eb7c39397c 100644 --- a/frontend/__tests__/components/features/analytics/analytics-consent-form-modal.test.tsx +++ b/frontend/__tests__/components/features/analytics/analytics-consent-form-modal.test.tsx @@ -3,7 +3,7 @@ import { describe, expect, it, vi } from "vitest"; import { render, screen, waitFor } from "@testing-library/react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { AnalyticsConsentFormModal } from "#/components/features/analytics/analytics-consent-form-modal"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; describe("AnalyticsConsentFormModal", () => { it("should call saveUserSettings with consent", async () => { diff --git a/frontend/__tests__/components/features/home/repo-connector.test.tsx b/frontend/__tests__/components/features/home/repo-connector.test.tsx index 0500d441a2..4418d57db3 100644 --- a/frontend/__tests__/components/features/home/repo-connector.test.tsx +++ b/frontend/__tests__/components/features/home/repo-connector.test.tsx @@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import userEvent from "@testing-library/user-event"; import { QueryClientProvider, QueryClient } from "@tanstack/react-query"; import { createRoutesStub, Outlet } from "react-router"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import ConversationService from "#/api/conversation-service/conversation-service.api"; import GitService from "#/api/git-service/git-service.api"; import OptionService from "#/api/option-service/option-service.api"; @@ -404,7 +404,7 @@ describe("RepoConnector", () => { ConversationService, "createConversation", ); - createConversationSpy.mockImplementation(() => new Promise(() => {})); // Never resolves to keep loading state + createConversationSpy.mockImplementation(() => new Promise(() => { })); // Never resolves to keep loading state const retrieveUserGitRepositoriesSpy = vi.spyOn( GitService, "retrieveUserGitRepositories", diff --git a/frontend/__tests__/components/features/sidebar/sidebar.test.tsx b/frontend/__tests__/components/features/sidebar/sidebar.test.tsx index 4844a778e1..dc5be687f5 100644 --- a/frontend/__tests__/components/features/sidebar/sidebar.test.tsx +++ b/frontend/__tests__/components/features/sidebar/sidebar.test.tsx @@ -3,7 +3,7 @@ import { renderWithProviders } from "test-utils"; import { createRoutesStub } from "react-router"; import { waitFor } from "@testing-library/react"; import { Sidebar } from "#/components/features/sidebar/sidebar"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; // These tests will now fail because the conversation panel is rendered through a portal // and technically not a child of the Sidebar component. diff --git a/frontend/__tests__/components/shared/modals/settings/settings-form.test.tsx b/frontend/__tests__/components/shared/modals/settings/settings-form.test.tsx index 6b4616ab12..099c50c194 100644 --- a/frontend/__tests__/components/shared/modals/settings/settings-form.test.tsx +++ b/frontend/__tests__/components/shared/modals/settings/settings-form.test.tsx @@ -3,7 +3,7 @@ import { describe, expect, it, vi } from "vitest"; import { renderWithProviders } from "test-utils"; import { createRoutesStub } from "react-router"; import { screen } from "@testing-library/react"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { SettingsForm } from "#/components/shared/modals/settings/settings-form"; import { DEFAULT_SETTINGS } from "#/services/settings"; diff --git a/frontend/__tests__/hooks/mutation/use-save-settings.test.tsx b/frontend/__tests__/hooks/mutation/use-save-settings.test.tsx index 29fdb99273..d2a7c798c4 100644 --- a/frontend/__tests__/hooks/mutation/use-save-settings.test.tsx +++ b/frontend/__tests__/hooks/mutation/use-save-settings.test.tsx @@ -1,7 +1,7 @@ import { renderHook, waitFor } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { useSaveSettings } from "#/hooks/mutation/use-save-settings"; describe("useSaveSettings", () => { diff --git a/frontend/__tests__/routes/_oh.test.tsx b/frontend/__tests__/routes/_oh.test.tsx index 7737eaa7f7..0b76148ad6 100644 --- a/frontend/__tests__/routes/_oh.test.tsx +++ b/frontend/__tests__/routes/_oh.test.tsx @@ -10,7 +10,7 @@ import MainApp from "#/routes/root-layout"; import i18n from "#/i18n"; import OptionService from "#/api/option-service/option-service.api"; import * as CaptureConsent from "#/utils/handle-capture-consent"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import * as ToastHandlers from "#/utils/custom-toast-handlers"; describe("frontend/routes/_oh", () => { diff --git a/frontend/__tests__/routes/app-settings.test.tsx b/frontend/__tests__/routes/app-settings.test.tsx index 44dacce2fb..038cb94c52 100644 --- a/frontend/__tests__/routes/app-settings.test.tsx +++ b/frontend/__tests__/routes/app-settings.test.tsx @@ -3,7 +3,7 @@ import { afterEach, describe, expect, it, vi } from "vitest"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import userEvent from "@testing-library/user-event"; import AppSettingsScreen from "#/routes/app-settings"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { MOCK_DEFAULT_USER_SETTINGS } from "#/mocks/handlers"; import { AvailableLanguages } from "#/i18n"; import * as CaptureConsent from "#/utils/handle-capture-consent"; diff --git a/frontend/__tests__/routes/git-settings.test.tsx b/frontend/__tests__/routes/git-settings.test.tsx index 0c3f77bed0..9f1008ce3c 100644 --- a/frontend/__tests__/routes/git-settings.test.tsx +++ b/frontend/__tests__/routes/git-settings.test.tsx @@ -6,7 +6,7 @@ import userEvent from "@testing-library/user-event"; import i18next from "i18next"; import { I18nextProvider } from "react-i18next"; import GitSettingsScreen from "#/routes/git-settings"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import OptionService from "#/api/option-service/option-service.api"; import AuthService from "#/api/auth-service/auth-service.api"; import { MOCK_DEFAULT_USER_SETTINGS } from "#/mocks/handlers"; diff --git a/frontend/__tests__/routes/home-screen.test.tsx b/frontend/__tests__/routes/home-screen.test.tsx index a515f670be..5ac746e924 100644 --- a/frontend/__tests__/routes/home-screen.test.tsx +++ b/frontend/__tests__/routes/home-screen.test.tsx @@ -6,7 +6,7 @@ import { createRoutesStub } from "react-router"; import { createAxiosNotFoundErrorObject } from "test-utils"; import HomeScreen from "#/routes/home"; import { GitRepository } from "#/types/git"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import GitService from "#/api/git-service/git-service.api"; import OptionService from "#/api/option-service/option-service.api"; import MainApp from "#/routes/root-layout"; diff --git a/frontend/__tests__/routes/llm-settings.test.tsx b/frontend/__tests__/routes/llm-settings.test.tsx index f826b20f45..378df48506 100644 --- a/frontend/__tests__/routes/llm-settings.test.tsx +++ b/frontend/__tests__/routes/llm-settings.test.tsx @@ -3,7 +3,7 @@ import userEvent from "@testing-library/user-event"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { QueryClientProvider, QueryClient } from "@tanstack/react-query"; import LlmSettingsScreen from "#/routes/llm-settings"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { MOCK_DEFAULT_USER_SETTINGS, resetTestHandlersMockSettings, diff --git a/frontend/__tests__/routes/secrets-settings.test.tsx b/frontend/__tests__/routes/secrets-settings.test.tsx index 1ffccc29ff..9b5c315f92 100644 --- a/frontend/__tests__/routes/secrets-settings.test.tsx +++ b/frontend/__tests__/routes/secrets-settings.test.tsx @@ -6,7 +6,7 @@ import { createRoutesStub, Outlet } from "react-router"; import SecretsSettingsScreen from "#/routes/secrets-settings"; import { SecretsService } from "#/api/secrets-service"; import { GetSecretsResponse } from "#/api/secrets-service.types"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import OptionService from "#/api/option-service/option-service.api"; import { MOCK_DEFAULT_USER_SETTINGS } from "#/mocks/handlers"; diff --git a/frontend/src/settings-service/settings-service.api.ts b/frontend/src/api/settings-service/settings-service.api.ts similarity index 93% rename from frontend/src/settings-service/settings-service.api.ts rename to frontend/src/api/settings-service/settings-service.api.ts index 6d7309b8d1..f75e10c3e6 100644 --- a/frontend/src/settings-service/settings-service.api.ts +++ b/frontend/src/api/settings-service/settings-service.api.ts @@ -1,4 +1,4 @@ -import { openHands } from "../api/open-hands-axios"; +import { openHands } from "../open-hands-axios"; import { ApiSettings, PostApiSettings } from "./settings.types"; /** diff --git a/frontend/src/settings-service/settings.types.ts b/frontend/src/api/settings-service/settings.types.ts similarity index 100% rename from frontend/src/settings-service/settings.types.ts rename to frontend/src/api/settings-service/settings.types.ts diff --git a/frontend/src/hooks/mutation/use-add-mcp-server.ts b/frontend/src/hooks/mutation/use-add-mcp-server.ts index 92725cbe58..9ba2eadf25 100644 --- a/frontend/src/hooks/mutation/use-add-mcp-server.ts +++ b/frontend/src/hooks/mutation/use-add-mcp-server.ts @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useSettings } from "#/hooks/query/use-settings"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { MCPSSEServer, MCPStdioServer, MCPSHTTPServer } from "#/types/settings"; type MCPServerType = "sse" | "stdio" | "shttp"; diff --git a/frontend/src/hooks/mutation/use-delete-mcp-server.ts b/frontend/src/hooks/mutation/use-delete-mcp-server.ts index f060890ae8..79b3ccd959 100644 --- a/frontend/src/hooks/mutation/use-delete-mcp-server.ts +++ b/frontend/src/hooks/mutation/use-delete-mcp-server.ts @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useSettings } from "#/hooks/query/use-settings"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { MCPConfig } from "#/types/settings"; export function useDeleteMcpServer() { diff --git a/frontend/src/hooks/mutation/use-save-settings.ts b/frontend/src/hooks/mutation/use-save-settings.ts index 099ab41ea4..168c1d11f1 100644 --- a/frontend/src/hooks/mutation/use-save-settings.ts +++ b/frontend/src/hooks/mutation/use-save-settings.ts @@ -1,9 +1,9 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { usePostHog } from "posthog-js/react"; import { DEFAULT_SETTINGS } from "#/services/settings"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { PostSettings } from "#/types/settings"; -import { PostApiSettings } from "#/settings-service/settings.types"; +import { PostApiSettings } from "#/api/settings-service/settings.types"; import { useSettings } from "../query/use-settings"; const saveSettingsMutationFn = async (settings: Partial) => { diff --git a/frontend/src/hooks/mutation/use-update-mcp-server.ts b/frontend/src/hooks/mutation/use-update-mcp-server.ts index 83ef5dfcf3..c05b322ba2 100644 --- a/frontend/src/hooks/mutation/use-update-mcp-server.ts +++ b/frontend/src/hooks/mutation/use-update-mcp-server.ts @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useSettings } from "#/hooks/query/use-settings"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { MCPSSEServer, MCPStdioServer, MCPSHTTPServer } from "#/types/settings"; type MCPServerType = "sse" | "stdio" | "shttp"; diff --git a/frontend/src/hooks/query/use-settings.ts b/frontend/src/hooks/query/use-settings.ts index c1769c8422..3f2e57c90d 100644 --- a/frontend/src/hooks/query/use-settings.ts +++ b/frontend/src/hooks/query/use-settings.ts @@ -1,5 +1,5 @@ import { useQuery } from "@tanstack/react-query"; -import SettingsService from "#/settings-service/settings-service.api"; +import SettingsService from "#/api/settings-service/settings-service.api"; import { DEFAULT_SETTINGS } from "#/services/settings"; import { useIsOnTosPage } from "#/hooks/use-is-on-tos-page"; import { Settings } from "#/types/settings"; diff --git a/frontend/src/mocks/handlers.ts b/frontend/src/mocks/handlers.ts index 04f4c03ca9..09053bfc31 100644 --- a/frontend/src/mocks/handlers.ts +++ b/frontend/src/mocks/handlers.ts @@ -7,7 +7,7 @@ import { Provider } from "#/types/settings"; import { ApiSettings, PostApiSettings, -} from "#/settings-service/settings.types"; +} from "#/api/settings-service/settings.types"; import { FILE_SERVICE_HANDLERS } from "./file-service-handlers"; import { GitUser } from "#/types/git"; import { TASK_SUGGESTIONS_HANDLERS } from "./task-suggestions-handlers";