From b24acd14e2e94320c619b9c5b9f671e930102ce6 Mon Sep 17 00:00:00 2001 From: rvveber Date: Tue, 4 Mar 2025 13:47:15 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8(frontend)=20email=20invitation=20i?= =?UTF-8?q?n=20invited=20user's=20language?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - language for invitation emails => language saved on the invited user - if invited user does not exist yet => language of the sending user - if for some reason no sending user => system default language --- CHANGELOG.md | 1 + .../docs/doc-share/api/useCreateDocAccess.tsx | 6 ------ .../docs/doc-share/api/useCreateDocInvitation.tsx | 6 ------ .../components/DocShareAddMemberList.tsx | 3 --- .../src/features/home/components/HomeContent.tsx | 6 ++---- .../apps/impress/src/i18n/hooks/useLanguage.tsx | 15 --------------- src/frontend/apps/impress/src/i18n/types.ts | 2 -- 7 files changed, 3 insertions(+), 36 deletions(-) delete mode 100644 src/frontend/apps/impress/src/i18n/hooks/useLanguage.tsx delete mode 100644 src/frontend/apps/impress/src/i18n/types.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d72760f..84c25d3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ and this project adheres to - 🐛(backend) allow any type of extensions for media download #671 - ♻️(frontend) improve table pdf rendering +- 🐛(email) invitation emails in receivers language ## [2.2.0] - 2025-02-10 diff --git a/src/frontend/apps/impress/src/features/docs/doc-share/api/useCreateDocAccess.tsx b/src/frontend/apps/impress/src/features/docs/doc-share/api/useCreateDocAccess.tsx index e9f4c0c1..77e2915b 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-share/api/useCreateDocAccess.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-share/api/useCreateDocAccess.tsx @@ -10,7 +10,6 @@ import { Role, } from '@/features/docs/doc-management'; import { KEY_LIST_DOC_ACCESSES } from '@/features/docs/doc-share'; -import { ContentLanguage } from '@/i18n/types'; import { useBroadcastStore } from '@/stores'; import { OptionType } from '../types'; @@ -21,20 +20,15 @@ interface CreateDocAccessParams { role: Role; docId: Doc['id']; memberId: User['id']; - contentLanguage: ContentLanguage; } export const createDocAccess = async ({ memberId, role, docId, - contentLanguage, }: CreateDocAccessParams): Promise => { const response = await fetchAPI(`documents/${docId}/accesses/`, { method: 'POST', - headers: { - 'Content-Language': contentLanguage, - }, body: JSON.stringify({ user_id: memberId, role, diff --git a/src/frontend/apps/impress/src/features/docs/doc-share/api/useCreateDocInvitation.tsx b/src/frontend/apps/impress/src/features/docs/doc-share/api/useCreateDocInvitation.tsx index 47cc2585..6f67b392 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-share/api/useCreateDocInvitation.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-share/api/useCreateDocInvitation.tsx @@ -4,7 +4,6 @@ import { APIError, errorCauses, fetchAPI } from '@/api'; import { User } from '@/features/auth'; import { Doc, Role } from '@/features/docs/doc-management'; import { Invitation, OptionType } from '@/features/docs/doc-share/types'; -import { ContentLanguage } from '@/i18n/types'; import { KEY_LIST_DOC_INVITATIONS } from './useDocInvitations'; @@ -12,20 +11,15 @@ interface CreateDocInvitationParams { email: User['email']; role: Role; docId: Doc['id']; - contentLanguage: ContentLanguage; } export const createDocInvitation = async ({ email, role, docId, - contentLanguage, }: CreateDocInvitationParams): Promise => { const response = await fetchAPI(`documents/${docId}/invitations/`, { method: 'POST', - headers: { - 'Content-Language': contentLanguage, - }, body: JSON.stringify({ email, role, diff --git a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareAddMemberList.tsx b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareAddMemberList.tsx index e1282d53..cb353b33 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareAddMemberList.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareAddMemberList.tsx @@ -12,7 +12,6 @@ import { Box } from '@/components'; import { useCunninghamTheme } from '@/cunningham'; import { User } from '@/features/auth'; import { Doc, Role } from '@/features/docs'; -import { useLanguage } from '@/i18n/hooks/useLanguage'; import { useCreateDocAccess, useCreateDocInvitation } from '../api'; import { OptionType } from '../types'; @@ -42,7 +41,6 @@ export const DocShareAddMemberList = ({ const { toast } = useToastProvider(); const [isLoading, setIsLoading] = useState(false); const { spacingsTokens, colorsTokens } = useCunninghamTheme(); - const { contentLanguage } = useLanguage(); const [invitationRole, setInvitationRole] = useState(Role.EDITOR); const canShare = doc.abilities.accesses_manage; const spacing = spacingsTokens(); @@ -90,7 +88,6 @@ export const DocShareAddMemberList = ({ const payload = { role: invitationRole, docId: doc.id, - contentLanguage, }; return isInvitationMode diff --git a/src/frontend/apps/impress/src/features/home/components/HomeContent.tsx b/src/frontend/apps/impress/src/features/home/components/HomeContent.tsx index 77e362c5..2343668f 100644 --- a/src/frontend/apps/impress/src/features/home/components/HomeContent.tsx +++ b/src/frontend/apps/impress/src/features/home/components/HomeContent.tsx @@ -6,7 +6,6 @@ import { Box, Text } from '@/components'; import { useCunninghamTheme } from '@/cunningham'; import { Footer } from '@/features/footer'; import { LeftPanel } from '@/features/left-panel'; -import { useLanguage } from '@/i18n/hooks/useLanguage'; import { useResponsiveStore } from '@/stores'; import SC1ResponsiveEn from '../assets/SC1-responsive-en.png'; @@ -28,11 +27,10 @@ import { HomeHeader, getHeaderHeight } from './HomeHeader'; import { HomeSection } from './HomeSection'; export function HomeContent() { - const { t } = useTranslation(); + const { i18n, t } = useTranslation(); const { colorsTokens } = useCunninghamTheme(); const { isMobile, isSmallMobile, isTablet } = useResponsiveStore(); - const lang = useLanguage(); - const isFrLanguage = lang.language === 'fr'; + const isFrLanguage = i18n.resolvedLanguage === 'fr'; return ( diff --git a/src/frontend/apps/impress/src/i18n/hooks/useLanguage.tsx b/src/frontend/apps/impress/src/i18n/hooks/useLanguage.tsx deleted file mode 100644 index 4879bda8..00000000 --- a/src/frontend/apps/impress/src/i18n/hooks/useLanguage.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { useTranslation } from 'react-i18next'; - -import { ContentLanguage } from '../types'; - -export const useLanguage = (): { - language: string; - contentLanguage: ContentLanguage; -} => { - const { i18n } = useTranslation(); - - return { - language: i18n.language, - contentLanguage: i18n.language === 'fr' ? 'fr-fr' : 'en-us', - }; -}; diff --git a/src/frontend/apps/impress/src/i18n/types.ts b/src/frontend/apps/impress/src/i18n/types.ts deleted file mode 100644 index d9b0064a..00000000 --- a/src/frontend/apps/impress/src/i18n/types.ts +++ /dev/null @@ -1,2 +0,0 @@ -// See: https://github.com/numerique-gouv/impress/blob/ac58341984c99c10ebfac7f8bbe1e8756c48e4d4/src/backend/impress/settings.py#L156-L161 -export type ContentLanguage = 'en-us' | 'fr-fr';