diff --git a/src/backend/core/api/openapi.json b/src/backend/core/api/openapi.json index d0b58518..b985f918 100644 --- a/src/backend/core/api/openapi.json +++ b/src/backend/core/api/openapi.json @@ -4696,6 +4696,7 @@ }, "draftBody": { "type": "string", + "nullable": true, "readOnly": true }, "attachments": { diff --git a/src/backend/core/api/serializers.py b/src/backend/core/api/serializers.py index 4fe86f11..c070faf9 100644 --- a/src/backend/core/api/serializers.py +++ b/src/backend/core/api/serializers.py @@ -532,7 +532,7 @@ class MessageSerializer(serializers.ModelSerializer): """Return the list of HTML body parts (JMAP style).""" return instance.get_parsed_field("htmlBody") or [] - @extend_schema_field(serializers.CharField()) + @extend_schema_field(serializers.CharField(allow_null=True)) def get_draftBody(self, instance): # pylint: disable=invalid-name """Return an arbitrary JSON object representing the draft body.""" return ( diff --git a/src/frontend/src/features/api/gen/models/message.ts b/src/frontend/src/features/api/gen/models/message.ts index 9078fd7a..005378ab 100644 --- a/src/frontend/src/features/api/gen/models/message.ts +++ b/src/frontend/src/features/api/gen/models/message.ts @@ -29,7 +29,8 @@ export interface Message { readonly updated_at: string; readonly htmlBody: readonly MessageHtmlBodyItem[]; readonly textBody: readonly MessageTextBodyItem[]; - readonly draftBody: string; + /** @nullable */ + readonly draftBody: string | null; readonly attachments: readonly Attachment[]; readonly sender: Contact; readonly to: readonly Contact[]; diff --git a/src/frontend/src/features/forms/components/message-form/index.tsx b/src/frontend/src/features/forms/components/message-form/index.tsx index b4f9529b..92385c1b 100644 --- a/src/frontend/src/features/forms/components/message-form/index.tsx +++ b/src/frontend/src/features/forms/components/message-form/index.tsx @@ -145,7 +145,7 @@ export const MessageForm = ({ } const formDefaultValues = useMemo(() => { - const [draftBody, draftDriveAttachments] = MailHelper.extractDriveAttachmentsFromDraft(draft?.draftBody); + const [draftBody, draftDriveAttachments] = MailHelper.extractDriveAttachmentsFromDraft(draft?.draftBody ?? ''); return { from: defaultSenderId ?? '', to: draft?.to?.map(contact => contact.email) ?? recipients,