🐛(fix) add enabled update your mailbox
can update your mailbox as viewer
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user