From 4f7683e55a80505ad6a6e070d2c079f22dc390ab Mon Sep 17 00:00:00 2001 From: gabrieljablonski Date: Fri, 17 Apr 2026 18:20:37 -0300 Subject: [PATCH] fix(signature): coalesce null message_signature to empty string users.message_signature is nullable, so currentUser.message_signature can arrive as null for accounts without a signature set. Vue prop defaults only kick in for undefined, so the null passed through v-model to the Editor, which called MarkdownIt.parse(null) and threw 'Input data should be a String', breaking the profile settings page. --- .../dashboard/settings/profile/MessageSignature.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/javascript/dashboard/routes/dashboard/settings/profile/MessageSignature.vue b/app/javascript/dashboard/routes/dashboard/settings/profile/MessageSignature.vue index cf6cf45b5..9a9be42a1 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/profile/MessageSignature.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/profile/MessageSignature.vue @@ -42,7 +42,7 @@ const { fetchInboxSignatures, getInboxSignature, hasInboxSignature } = const selectedInboxId = ref(INBOX_OPTION_DEFAULT); const selectedInbox = ref(null); -const signature = ref(props.messageSignature); +const signature = ref(props.messageSignature ?? ''); const signaturePosition = ref(props.signaturePosition); const signatureSeparator = ref(props.signatureSeparator); const isSaving = ref(false); @@ -134,7 +134,7 @@ const messagePreview = computed(() => { const loadSignatureForSelection = () => { if (isDefaultSelected.value) { - signature.value = props.messageSignature; + signature.value = props.messageSignature ?? ''; signaturePosition.value = props.signaturePosition; signatureSeparator.value = props.signatureSeparator; return; @@ -142,12 +142,12 @@ const loadSignatureForSelection = () => { const inboxSig = getInboxSignature(selectedInboxId.value); if (inboxSig) { - signature.value = inboxSig.message_signature; + signature.value = inboxSig.message_signature ?? ''; signaturePosition.value = inboxSig.signature_position || 'top'; signatureSeparator.value = inboxSig.signature_separator || 'blank'; } else { // Pre-fill with global signature for convenience - signature.value = props.messageSignature; + signature.value = props.messageSignature ?? ''; signaturePosition.value = props.signaturePosition; signatureSeparator.value = props.signatureSeparator; }