diff --git a/e2e/test/scenarios/admin/databases/reproductions/33035-group-translations.cy.spec.js b/e2e/test/scenarios/admin/databases/reproductions/33035-group-translations.cy.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..bfb2d7bc3ffb93345d65098be895e2dac77bf2fc --- /dev/null +++ b/e2e/test/scenarios/admin/databases/reproductions/33035-group-translations.cy.spec.js @@ -0,0 +1,17 @@ +import { restore } from "e2e/support/helpers"; +import { SAMPLE_DB_ID } from "e2e/support/cypress_data"; + +describe("issue 33035", () => { + beforeEach(() => { + restore(); + cy.signInAsAdmin(); + cy.request("GET", "/api/user/current").then(({ body: { id: user_id } }) => { + cy.request("PUT", `/api/user/${user_id}`, { locale: "de" }); + }); + }); + + it("databases page should work in a non-default locale (metabase#33035)", () => { + cy.visit(`/admin/permissions/data/database/${SAMPLE_DB_ID}`); + cy.findByRole("main").findByText("Orders").should("be.visible"); + }); +}); diff --git a/frontend/src/metabase/admin/permissions/selectors/data-permissions/group-sidebar.ts b/frontend/src/metabase/admin/permissions/selectors/data-permissions/group-sidebar.ts index 06aac8b0f3dddfcb64ab5112714b808958374c60..6cb92d7eb0e214c871cc14bd70e32460507bb3ff 100644 --- a/frontend/src/metabase/admin/permissions/selectors/data-permissions/group-sidebar.ts +++ b/frontend/src/metabase/admin/permissions/selectors/data-permissions/group-sidebar.ts @@ -3,6 +3,7 @@ import { t } from "ttag"; import { State } from "metabase-types/store"; import { Group } from "metabase-types/api"; +import { getGroupNameLocalized } from "metabase/lib/groups"; import { RawGroupRouteParams } from "../../types"; import { getOrderedGroups } from "./groups"; @@ -28,11 +29,13 @@ export const getGroupsSidebar = createSelector( const pinnedGroupItems = pinnedGroups.map(group => ({ ...group, + name: getGroupNameLocalized(group), icon: "bolt", })); const unpinnedGroupItems = unpinnedGroups.map(group => ({ ...group, + name: getGroupNameLocalized(group), icon: "group", })); diff --git a/frontend/src/metabase/admin/permissions/selectors/data-permissions/groups.ts b/frontend/src/metabase/admin/permissions/selectors/data-permissions/groups.ts index a92bf4d276e4f16e67d7faedb3af21485f2ecc41..eb3daf7bf8c56bb80258eb4706d497a1c202ad8e 100644 --- a/frontend/src/metabase/admin/permissions/selectors/data-permissions/groups.ts +++ b/frontend/src/metabase/admin/permissions/selectors/data-permissions/groups.ts @@ -1,14 +1,9 @@ import { createSelector } from "@reduxjs/toolkit"; import _ from "underscore"; -import { assoc } from "icepick"; import Groups from "metabase/entities/groups"; import { Group } from "metabase-types/api"; -import { - getGroupNameLocalized, - isAdminGroup, - isDefaultGroup, -} from "metabase/lib/groups"; +import { isAdminGroup, isDefaultGroup } from "metabase/lib/groups"; const isPinnedGroup = (group: Group) => isAdminGroup(group) || isDefaultGroup(group); @@ -16,10 +11,7 @@ const isPinnedGroup = (group: Group) => export const getOrderedGroups = createSelector( Groups.selectors.getList, (groups: Group[]) => { - const translatedGroups = groups.map(group => - assoc(group, "name", getGroupNameLocalized(group)), - ); - return _.partition(translatedGroups, isPinnedGroup); + return _.partition(groups, isPinnedGroup); }, );