🐛(fix) add enabled update your mailbox

can update your mailbox as viewer
This commit is contained in:
Eléonore Voisin
2025-09-17 15:25:32 +02:00
committed by Marie
parent 0ad60ab292
commit 78a5d907ca
4 changed files with 38 additions and 21 deletions

View File

@@ -8,6 +8,8 @@ and this project adheres to
## [Unreleased] ## [Unreleased]
- 🐛(fix) add enabled update your mailbox
## [1.19.0] - 2025-09-03 ## [1.19.0] - 2025-09-03
- ✨(front) add modal update mailboxes #954 - ✨(front) add modal update mailboxes #954

View File

@@ -4,6 +4,7 @@ import { useEffect, useMemo, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { Box, Tag, Text, TextErrors } from '@/components'; import { Box, Tag, Text, TextErrors } from '@/components';
import { useAuthStore } from '@/core/auth';
import { MailDomain } from '@/features/mail-domains/domains'; import { MailDomain } from '@/features/mail-domains/domains';
import { import {
MailDomainMailbox, MailDomainMailbox,
@@ -40,6 +41,7 @@ export function MailBoxesListView({
querySearch, querySearch,
}: MailBoxesListViewProps) { }: MailBoxesListViewProps) {
const { t } = useTranslation(); const { t } = useTranslation();
const { userData } = useAuthStore();
const [sortModel] = useState<SortModel>([]); const [sortModel] = useState<SortModel>([]);
@@ -68,30 +70,33 @@ export function MailBoxesListView({
return []; return [];
} }
return data.pages.flatMap((page) => return data.pages.flatMap((page) =>
page.results.map((mailbox: MailDomainMailbox) => ({ page.results.map((mailbox: MailDomainMailbox) => {
id: mailbox.id, const email = `${mailbox.local_part}@${mailDomain.name}`;
email: `${mailbox.local_part}@${mailDomain.name}`, const isCurrentUser = userData?.email === email;
first_name: mailbox.first_name,
last_name: mailbox.last_name, return {
name: `${mailbox.first_name} ${mailbox.last_name}`, id: mailbox.id,
local_part: mailbox.local_part, email,
secondary_email: mailbox.secondary_email, name: `${mailbox.first_name} ${mailbox.last_name}`,
status: mailbox.status, first_name: mailbox.first_name,
mailbox, last_name: mailbox.last_name,
})), local_part: mailbox.local_part,
secondary_email: mailbox.secondary_email,
status: mailbox.status,
mailbox,
isCurrentUser,
};
}),
); );
}, [data, mailDomain]); }, [data, mailDomain, userData?.email]);
const filteredMailboxes = useMemo(() => { const filteredMailboxes = useMemo(() => {
if (typeof querySearch !== 'string' || !querySearch) { if (!querySearch) {
return mailboxes; return mailboxes;
} }
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
const lowerCaseSearch = querySearch.toLowerCase(); const lowerCaseSearch = querySearch.toLowerCase();
return mailboxes.filter( return mailboxes.filter((mailbox) =>
(mailbox) => mailbox.email.toLowerCase().includes(lowerCaseSearch),
typeof mailbox.email === 'string' &&
mailbox.email.toLowerCase().includes(lowerCaseSearch),
); );
}, [querySearch, mailboxes]); }, [querySearch, mailboxes]);
@@ -133,7 +138,14 @@ export function MailBoxesListView({
{ {
field: 'email', field: 'email',
headerName: `${t('Address')}${filteredMailboxes.length}`, headerName: `${t('Address')}${filteredMailboxes.length}`,
renderCell: ({ row }) => <Text>{row.email}</Text>, renderCell: ({ row }) => (
<Text
$weight={row.isCurrentUser ? '600' : '400'}
$theme={row.isCurrentUser ? 'primary' : 'greyscale'}
>
{row.email}
</Text>
),
}, },
{ {
field: 'name', field: 'name',
@@ -145,7 +157,7 @@ export function MailBoxesListView({
$theme="greyscale" $theme="greyscale"
$css="text-transform: capitalize;" $css="text-transform: capitalize;"
> >
{`${row.first_name} ${row.last_name}`} {row.name}
</Text> </Text>
), ),
}, },

View File

@@ -69,7 +69,7 @@ export const PanelActions = ({ mailDomain, mailbox }: PanelActionsProps) => {
if ( if (
mailbox.status === 'pending' || mailbox.status === 'pending' ||
mailbox.status === 'failed' || mailbox.status === 'failed' ||
mailDomain.abilities.post === false (mailDomain.abilities.post === false && !mailbox.isCurrentUser)
) { ) {
return null; return null;
} }

View File

@@ -18,9 +18,12 @@ export type MailDomainMailboxStatus =
export interface ViewMailbox { export interface ViewMailbox {
id: string; id: string;
email: string; email: string;
name: string;
first_name: string; first_name: string;
last_name: string; last_name: string;
local_part: string; local_part: string;
secondary_email: string; secondary_email: string;
status: MailDomainMailboxStatus; status: MailDomainMailboxStatus;
mailbox: MailDomainMailbox;
isCurrentUser?: boolean;
} }