diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/hooks/index.ts b/src/frontend/apps/impress/src/features/docs/doc-management/hooks/index.ts new file mode 100644 index 00000000..9a820990 --- /dev/null +++ b/src/frontend/apps/impress/src/features/docs/doc-management/hooks/index.ts @@ -0,0 +1 @@ +export * from './useTransRole'; diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/hooks/useTransRole.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/hooks/useTransRole.tsx new file mode 100644 index 00000000..33755578 --- /dev/null +++ b/src/frontend/apps/impress/src/features/docs/doc-management/hooks/useTransRole.tsx @@ -0,0 +1,20 @@ +import { useTranslation } from 'react-i18next'; + +import { Role } from '../types'; + +export const useTransRole = () => { + const { t } = useTranslation(); + + const translatedRoles = { + [Role.ADMIN]: t('Administrator'), + [Role.READER]: t('Reader'), + [Role.OWNER]: t('Owner'), + [Role.EDITOR]: t('Editor'), + }; + + const transRole = (role: Role) => { + return translatedRoles[role]; + }; + + return transRole; +}; diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/index.ts b/src/frontend/apps/impress/src/features/docs/doc-management/index.ts index b4debe96..6d490e09 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-management/index.ts +++ b/src/frontend/apps/impress/src/features/docs/doc-management/index.ts @@ -1,4 +1,5 @@ export * from './api'; export * from './components'; +export * from './hooks'; export * from './types'; export * from './utils'; diff --git a/src/frontend/apps/impress/src/features/docs/members/members-add/components/ChooseRole.tsx b/src/frontend/apps/impress/src/features/docs/members/members-add/components/ChooseRole.tsx index 1ff9144d..86094e51 100644 --- a/src/frontend/apps/impress/src/features/docs/members/members-add/components/ChooseRole.tsx +++ b/src/frontend/apps/impress/src/features/docs/members/members-add/components/ChooseRole.tsx @@ -1,7 +1,6 @@ import { Radio, RadioGroup } from '@openfun/cunningham-react'; -import { useTranslation } from 'react-i18next'; -import { Role } from '@/features/docs/doc-management'; +import { Role, useTransRole } from '@/features/docs/doc-management'; interface ChooseRoleProps { currentRole: Role; @@ -16,21 +15,14 @@ export const ChooseRole = ({ currentRole, setRole, }: ChooseRoleProps) => { - const { t } = useTranslation(); - - const translatedRoles = { - [Role.ADMIN]: t('Administrator'), - [Role.READER]: t('Reader'), - [Role.OWNER]: t('Owner'), - [Role.EDITOR]: t('Editor'), - }; + const transRole = useTransRole(); return ( {Object.values(Role).map((role) => ( setRole(evt.target.value as Role)} diff --git a/src/frontend/apps/impress/src/features/docs/members/members-grid/components/MemberGrid.tsx b/src/frontend/apps/impress/src/features/docs/members/members-grid/components/MemberGrid.tsx index cbe82aaa..db331f62 100644 --- a/src/frontend/apps/impress/src/features/docs/members/members-grid/components/MemberGrid.tsx +++ b/src/frontend/apps/impress/src/features/docs/members/members-grid/components/MemberGrid.tsx @@ -3,7 +3,11 @@ import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Card, TextErrors } from '@/components'; -import { Doc, Role, currentDocRole } from '@/features/docs/doc-management'; +import { + Doc, + currentDocRole, + useTransRole, +} from '@/features/docs/doc-management/'; import { useDocAccesses } from '../api'; import { PAGE_SIZE } from '../conf'; @@ -43,6 +47,7 @@ function formatSortModel( export const MemberGrid = ({ doc }: MemberGridProps) => { const { t } = useTranslation(); + const transRole = useTransRole(); const pagination = usePagination({ pageSize: PAGE_SIZE, }); @@ -57,13 +62,6 @@ export const MemberGrid = ({ doc }: MemberGridProps) => { ordering, }); - const translatedRoles = { - [Role.ADMIN]: t('Administrator'), - [Role.READER]: t('Reader'), - [Role.OWNER]: t('Owner'), - [Role.EDITOR]: t('Editor'), - }; - /* * Bug occurs from the Cunningham Datagrid component, when applying sorting * on null values. Sanitize empty values to ensure consistent sorting functionality. @@ -71,7 +69,7 @@ export const MemberGrid = ({ doc }: MemberGridProps) => { const accesses = data?.results?.map((access) => ({ ...access, - localizedRole: translatedRoles[access.role], + localizedRole: transRole(access.role), email: access.user.email, })) || [];