change all actions

This commit is contained in:
hamid zarghami
2025-07-20 16:47:01 +03:30
parent 1106952e22
commit 9eed4ede94
22 changed files with 309 additions and 127 deletions
+13 -5
View File
@@ -10,6 +10,7 @@ import { useGetDrafts } from './hooks/useDraftData';
import { DraftMessage } from './types/DraftTypes';
import { formatDate } from '@/config/func';
import { useEmailActions } from '@/hooks/useEmailActions';
import { useSharedStore } from '@/shared/store/sharedStore';
const List: FC = () => {
const navigate = useNavigate();
@@ -17,6 +18,7 @@ const List: FC = () => {
const [currentPage, setCurrentPage] = useState(1);
const [filters, setFilters] = useState<FilterValues>({});
const emailActions = useEmailActions();
const { setDraftData, setOpenNewMessage, setEditingDraftId } = useSharedStore();
const { data: draftData, isLoading, refetch, isFetching } = useGetDrafts({
page: currentPage,
@@ -113,14 +115,14 @@ const List: FC = () => {
const handleDeleteSelected = () => {
selectedMessages.forEach(message => {
emailActions.deleteDraft(message.id);
emailActions.deleteDraft({ messageId: message.id, mailbox: message.mailbox });
});
setSelectedMessages([]);
};
const handleSendSelected = () => {
selectedMessages.forEach(message => {
emailActions.sendDraft(message.id);
emailActions.sendDraft({ messageId: message.id });
});
setSelectedMessages([]);
};
@@ -134,17 +136,23 @@ const List: FC = () => {
};
const handleDeleteDraft = (messageId: number) => {
emailActions.deleteDraft(messageId);
emailActions.deleteDraft({ messageId: messageId, mailbox: '' });
};
const handleSendDraft = (messageId: number) => {
emailActions.sendDraft(messageId);
emailActions.sendDraft({ messageId: messageId });
};
const handleEditDraft = (messageId: number) => {
navigate(`/draft/edit/${messageId}`);
};
const handleRowClick = (messageId: number, item: DraftMessage) => {
setDraftData(item);
setEditingDraftId(messageId);
setOpenNewMessage(true);
};
const getRowActions = (message: DraftMessage): RowActionItem[] => [
{
label: 'ارسال',
@@ -193,7 +201,7 @@ const List: FC = () => {
selectedActions={selectedActions}
onSelectionChange={handleSelectionChange}
selectedRows={selectedMessages}
onRowClick={(id) => navigate(`/draft/edit/${id}`)}
onRowClick={handleRowClick}
noDataMessage={
<div className="flex flex-col items-center ">
<InfoCircle size={32} className="text-gray-300 mb-2" />
+25
View File
@@ -42,4 +42,29 @@ export const useEditDraft = () => {
queryClient.invalidateQueries({ queryKey: ['drafts'] });
},
});
};
export const useUpdateDraft = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ messageId, draftData }: { messageId: string; draftData: DraftUpdateDto }) =>
api.updateDraft(messageId, draftData),
onSuccess: () => {
// Invalidate drafts queries to refresh the list
queryClient.invalidateQueries({ queryKey: ['drafts'] });
},
});
};
export const useSendDraft = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (messageId: string) => api.sendDraft(messageId),
onSuccess: () => {
// Invalidate drafts queries to refresh the list
queryClient.invalidateQueries({ queryKey: ['drafts'] });
},
});
};
+17 -1
View File
@@ -29,9 +29,25 @@ export const editDraft = async (
return data;
};
export const updateDraft = async (
messageId: string,
draftData: DraftUpdateDto
): Promise<void> => {
const { data } = await axios.patch(
`/email/messages/drafts/${messageId}`,
draftData
);
return data;
};
export const sendDraft = async (messageId: string): Promise<void> => {
const { data } = await axios.post(`/email/messages/drafts/${messageId}/send`);
return data;
};
export const getDraftDetail = async (
messageId: string
): Promise<InboxMessage> => {
const { data } = await axios.get(`/email/messages/drafts/${messageId}`);
const { data } = await axios.get(`/email/messages/${messageId}`);
return data.data.message;
};
+2
View File
@@ -104,4 +104,6 @@ export interface DraftUpdateDto {
text?: string;
html?: string;
attachments?: EmailAttachmentDto[];
isDraft?: boolean;
uploadOnly?: boolean;
}