diff --git a/src/meshcore_hub/web/static/js/spa-react/pages/Channels.test.tsx b/src/meshcore_hub/web/static/js/spa-react/pages/Channels.test.tsx index 12b6857..d392756 100644 --- a/src/meshcore_hub/web/static/js/spa-react/pages/Channels.test.tsx +++ b/src/meshcore_hub/web/static/js/spa-react/pages/Channels.test.tsx @@ -2,7 +2,7 @@ import { screen, waitFor } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import { Channels } from "@/pages/Channels"; -import { renderWithProviders } from "@/test/renderWithProviders"; +import { renderWithProviders, createTestQueryClient } from "@/test/renderWithProviders"; import { makeConfig } from "@/test/makeConfig"; import * as api from "@/utils/api"; @@ -69,4 +69,15 @@ describe("Channels", () => { expect(screen.queryByText("Public")).not.toBeInTheDocument(); }); }); + + it("renders correctly when cache was pre-populated by Dashboard (raw object shape)", async () => { + mockChannelsApi(); + const client = createTestQueryClient(); + client.setQueryData(["channels", "list", {}], CHANNELS); + renderWithProviders(, { client }); + await waitFor(() => { + expect(screen.getByText("Public")).toBeInTheDocument(); + expect(screen.getByText("Ops")).toBeInTheDocument(); + }); + }); }); diff --git a/src/meshcore_hub/web/static/js/spa-react/pages/Channels.tsx b/src/meshcore_hub/web/static/js/spa-react/pages/Channels.tsx index 18dff39..679e901 100644 --- a/src/meshcore_hub/web/static/js/spa-react/pages/Channels.tsx +++ b/src/meshcore_hub/web/static/js/spa-react/pages/Channels.tsx @@ -293,16 +293,10 @@ export function Channels() { error: queryError, } = useQuery({ queryKey: qk.channels.list({}), - queryFn: async ({ signal }) => { - const resp = await apiGet( - "/api/v1/channels", - {}, - { signal }, - ); - return resp.items || []; - }, + queryFn: ({ signal }) => + apiGet("/api/v1/channels", {}, { signal }), }); - const channels = data ?? []; + const channels = data?.items ?? []; const error = queryError ? queryError.message : null; const [modal, setModal] = useState(null);