Skip to content

Commit 7660eb9

Browse files
committed
🚑️(drafts) show draft replies in threads
1 parent 03a52f0 commit 7660eb9

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

src/backend/core/api/serializers.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,13 @@ class MessageRecipientSerializer(serializers.ModelSerializer):
608608

609609
class Meta:
610610
model = models.MessageRecipient
611-
fields = ["contact", "delivery_status", "delivery_message", "retry_at", "delivered_at"]
611+
fields = [
612+
"contact",
613+
"delivery_status",
614+
"delivery_message",
615+
"retry_at",
616+
"delivered_at",
617+
]
612618

613619

614620
class MessageSerializer(serializers.ModelSerializer):

src/backend/core/enums.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,9 @@ class MessageTemplateTypeChoices(models.IntegerChoices):
122122

123123

124124
EML_SUPPORTED_MIME_TYPES = ["message/rfc822", "application/eml", "text/plain"]
125-
MBOX_SUPPORTED_MIME_TYPES = ["application/octet-stream", "text/plain", "application/mbox"]
125+
MBOX_SUPPORTED_MIME_TYPES = [
126+
"application/octet-stream",
127+
"text/plain",
128+
"application/mbox",
129+
]
126130
ARCHIVE_SUPPORTED_MIME_TYPES = EML_SUPPORTED_MIME_TYPES + MBOX_SUPPORTED_MIME_TYPES

src/frontend/src/features/layouts/components/thread-view/components/thread-message/index.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,9 @@ export const ThreadMessage = forwardRef<HTMLElement, ThreadMessageProps>(
2828
({ message, isLatest, draftMessage, ...props }, ref) => {
2929
const { t, i18n } = useTranslation()
3030
const getReplyFormMode = () => {
31+
if (draftMessage?.is_draft) return 'reply';
3132
if (!message.is_draft || message.is_trashed) return null;
32-
if (!draftMessage) return 'new';
33-
if (draftMessage.is_draft) return 'reply';
34-
return null;
33+
return 'new';
3534
}
3635
const [replyFormMode, setReplyFormMode] = useState<MessageFormMode | null>(getReplyFormMode)
3736
const showReplyForm = replyFormMode !== null;

src/frontend/src/features/layouts/components/thread-view/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export const ThreadView = () => {
3939
// Nest draft messages under their parent messages
4040
const messagesWithDraftChildren = useMemo(() => {
4141
if (!messages?.results) return [];
42-
const rootMessages: MessageWithDraftChild[] = messages.results.filter((m) => !m.is_draft || !m.parent_id);
42+
const rootMessages: MessageWithDraftChild[] = messages.results.filter((m) => !m.is_draft || !m.parent_id);
4343
const draftChildren = messages.results.filter((m) => m.is_draft && m.parent_id);
4444
draftChildren.forEach((m) => {
4545
const parentMessage = rootMessages.find((um) => um.id === m.parent_id);

0 commit comments

Comments
 (0)