cc and bcc

This commit is contained in:
hamid zarghami
2025-10-23 11:05:03 +03:30
parent a081c364fe
commit 58f054ccfa
3 changed files with 121 additions and 3 deletions
@@ -21,6 +21,8 @@ export const useNewMessage = () => {
const { email: userEmail } = useAuthStore();
const [toEmails, setToEmails] = useState<string[]>([]);
const [ccEmails, setCcEmails] = useState<string[]>([]);
const [bccEmails, setBccEmails] = useState<string[]>([]);
const [subject, setSubject] = useState("");
const [content, setContent] = useState("");
const [priority, setPriority] = useState("");
@@ -48,6 +50,15 @@ export const useNewMessage = () => {
const toEmailsList =
draftDetail.to?.map((recipient) => recipient.address) || [];
setToEmails(toEmailsList);
const ccEmailsList =
draftDetail.cc?.map((recipient) => recipient.address) || [];
setCcEmails(ccEmailsList);
const bccEmailsList =
draftDetail.bcc?.map((recipient) => recipient.address) || [];
setBccEmails(bccEmailsList);
setSubject(draftDetail.subject || "");
const draftWithContent = (draftDetail as unknown) as {
@@ -96,6 +107,40 @@ export const useNewMessage = () => {
setToEmails(toEmails.filter((email) => email !== emailToRemove));
};
const addCcEmail = (email: string) => {
if (!isValidEmail(email)) {
return;
}
if (ccEmails.includes(email)) {
toast("این ایمیل قبلاً اضافه شده است", "error");
return;
}
setCcEmails([...ccEmails, email]);
};
const removeCcEmail = (emailToRemove: string) => {
setCcEmails(ccEmails.filter((email) => email !== emailToRemove));
};
const addBccEmail = (email: string) => {
if (!isValidEmail(email)) {
return;
}
if (bccEmails.includes(email)) {
toast("این ایمیل قبلاً اضافه شده است", "error");
return;
}
setBccEmails([...bccEmails, email]);
};
const removeBccEmail = (emailToRemove: string) => {
setBccEmails(bccEmails.filter((email) => email !== emailToRemove));
};
const parseEmailAddresses = (emails: string[]) => {
return emails
.filter((email) => email.length > 0)
@@ -104,6 +149,8 @@ export const useNewMessage = () => {
const resetForm = () => {
setToEmails([]);
setCcEmails([]);
setBccEmails([]);
setSubject("");
setContent("");
setPriority("");
@@ -141,6 +188,8 @@ export const useNewMessage = () => {
const textDirection = detectTextDirection(contentString);
const draftUpdateData = {
to: parseEmailAddresses(toEmails),
...(ccEmails.length > 0 && { cc: parseEmailAddresses(ccEmails) }),
...(bccEmails.length > 0 && { bcc: parseEmailAddresses(bccEmails) }),
subject,
html: `<div dir="${textDirection}" style="text-align: start; unicode-bidi: plaintext; font-family: 'Irancell', 'Vazirmatn', sans-serif;">${contentString}</div>`,
text: contentString.replace(/<[^>]*>/g, ""),
@@ -193,6 +242,8 @@ export const useNewMessage = () => {
const emailData: SendEmailDto = {
from: { address: userEmail || "sender@example.com" },
to: parseEmailAddresses(toEmails),
...(ccEmails.length > 0 && { cc: parseEmailAddresses(ccEmails) }),
...(bccEmails.length > 0 && { bcc: parseEmailAddresses(bccEmails) }),
subject,
html: `<div dir="${textDirection}" style="text-align: start; unicode-bidi: plaintext; font-family: 'Irancell', 'Vazirmatn', sans-serif;">${contentString}</div>`,
text: contentString.replace(/<[^>]*>/g, ""),
@@ -231,6 +282,8 @@ export const useNewMessage = () => {
return {
toEmails,
ccEmails,
bccEmails,
subject,
content,
priority,
@@ -242,6 +295,10 @@ export const useNewMessage = () => {
addEmail,
removeEmail,
addCcEmail,
removeCcEmail,
addBccEmail,
removeBccEmail,
setSubject,
setContent,
setPriority,