Skip to content
Snippets Groups Projects
Unverified Commit aaf93a0b authored by Anton Kulyk's avatar Anton Kulyk Committed by GitHub
Browse files

Respect data app homepage setting (#25368)

parent fdaa759a
No related branches found
No related tags found
No related merge requests found
......@@ -9,7 +9,10 @@ export function isDataAppCollection(collection: Collection) {
return typeof collection.app_id === "number";
}
export function getDataAppHomePageId(pages: Dashboard[]) {
export function getDataAppHomePageId(dataApp: DataApp, pages: Dashboard[]) {
if (dataApp.dashboard_id) {
return dataApp.dashboard_id;
}
const [firstPage] = _.sortBy(pages, "name");
return firstPage?.id;
}
import { createMockDataAppPage } from "metabase-types/api/mocks";
import {
createMockDataApp,
createMockDataAppPage,
} from "metabase-types/api/mocks";
import { getDataAppHomePageId } from "./utils";
describe("data app utils", () => {
const dataAppWithoutHomepage = createMockDataApp({ dashboard_id: null });
const dataAppWithHomepage = createMockDataApp({ dashboard_id: 3 });
const page1 = createMockDataAppPage({ id: 1, name: "A" });
const page2 = createMockDataAppPage({ id: 2, name: "B" });
const page3 = createMockDataAppPage({ id: 3, name: "C" });
const pages = [page1, page2, page3];
describe("getDataAppHomePageId", () => {
it("returns fist page in alphabetical order", () => {
const page1 = createMockDataAppPage({ id: 1, name: "A" });
const page2 = createMockDataAppPage({ id: 2, name: "B" });
const page3 = createMockDataAppPage({ id: 3, name: "C" });
describe("with explicit homepage", () => {
it("returns data app's dashboard_id", () => {
expect(getDataAppHomePageId(dataAppWithHomepage, pages)).toEqual(
dataAppWithHomepage.dashboard_id,
);
});
expect(getDataAppHomePageId([page2, page1, page3])).toEqual(page1.id);
it("returns data app's dashboard_id even if page list is empty", () => {
expect(getDataAppHomePageId(dataAppWithHomepage, [])).toEqual(
dataAppWithHomepage.dashboard_id,
);
});
});
it("returns undefined when there're no pages", () => {
expect(getDataAppHomePageId([])).toBeUndefined();
describe("without explicit homepage", () => {
it("returns fist page in alphabetical order", () => {
expect(getDataAppHomePageId(dataAppWithoutHomepage, pages)).toEqual(
page1.id,
);
});
it("returns undefined when there're no pages", () => {
expect(
getDataAppHomePageId(dataAppWithoutHomepage, []),
).toBeUndefined();
});
});
});
});
......@@ -64,13 +64,13 @@ function DataAppNavbarContainer({
return [
{
type: "data-app-page",
id: getDataAppHomePageId(pages),
id: getDataAppHomePageId(dataApp, pages),
},
];
}
return selectedItems;
}, [pages, selectedItems]);
}, [dataApp, pages, selectedItems]);
const onEditAppSettings = useCallback(() => {
setModal("MODAL_APP_SETTINGS");
......
......@@ -47,7 +47,7 @@ const DataAppLanding = ({
loadingAndErrorWrapper={false}
>
{({ list: pages = [] }: { list: any[] }) => {
const homepageId = getDataAppHomePageId(pages);
const homepageId = getDataAppHomePageId(dataApp, pages);
return homepageId ? (
<DashboardApp
dashboardId={homepageId}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment