🚑️(drafts) show draft replies in threads

This commit is contained in:
Sylvain Zimmer
2025-10-16 22:16:57 +02:00
parent 03a52f0056
commit 7660eb9d3a
4 changed files with 15 additions and 6 deletions
+7 -1
View File
@@ -608,7 +608,13 @@ class MessageRecipientSerializer(serializers.ModelSerializer):
class Meta:
model = models.MessageRecipient
fields = ["contact", "delivery_status", "delivery_message", "retry_at", "delivered_at"]
fields = [
"contact",
"delivery_status",
"delivery_message",
"retry_at",
"delivered_at",
]
class MessageSerializer(serializers.ModelSerializer):
+5 -1
View File
@@ -122,5 +122,9 @@ class MessageTemplateTypeChoices(models.IntegerChoices):
EML_SUPPORTED_MIME_TYPES = ["message/rfc822", "application/eml", "text/plain"]
MBOX_SUPPORTED_MIME_TYPES = ["application/octet-stream", "text/plain", "application/mbox"]
MBOX_SUPPORTED_MIME_TYPES = [
"application/octet-stream",
"text/plain",
"application/mbox",
]
ARCHIVE_SUPPORTED_MIME_TYPES = EML_SUPPORTED_MIME_TYPES + MBOX_SUPPORTED_MIME_TYPES
@@ -28,10 +28,9 @@ export const ThreadMessage = forwardRef<HTMLElement, ThreadMessageProps>(
({ message, isLatest, draftMessage, ...props }, ref) => {
const { t, i18n } = useTranslation()
const getReplyFormMode = () => {
if (draftMessage?.is_draft) return 'reply';
if (!message.is_draft || message.is_trashed) return null;
if (!draftMessage) return 'new';
if (draftMessage.is_draft) return 'reply';
return null;
return 'new';
}
const [replyFormMode, setReplyFormMode] = useState<MessageFormMode | null>(getReplyFormMode)
const showReplyForm = replyFormMode !== null;
@@ -39,7 +39,7 @@ export const ThreadView = () => {
// Nest draft messages under their parent messages
const messagesWithDraftChildren = useMemo(() => {
if (!messages?.results) return [];
const rootMessages: MessageWithDraftChild[] = messages.results.filter((m) => !m.is_draft || !m.parent_id);
const rootMessages: MessageWithDraftChild[] = messages.results.filter((m) => !m.is_draft || !m.parent_id);
const draftChildren = messages.results.filter((m) => m.is_draft && m.parent_id);
draftChildren.forEach((m) => {
const parentMessage = rootMessages.find((um) => um.id === m.parent_id);