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);