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.
This commit is contained in:
gabrieljablonski 2026-04-17 18:20:37 -03:00
parent 4d155e4c01
commit 4f7683e55a

View File

@ -42,7 +42,7 @@ const { fetchInboxSignatures, getInboxSignature, hasInboxSignature } =
const selectedInboxId = ref(INBOX_OPTION_DEFAULT); const selectedInboxId = ref(INBOX_OPTION_DEFAULT);
const selectedInbox = ref(null); const selectedInbox = ref(null);
const signature = ref(props.messageSignature); const signature = ref(props.messageSignature ?? '');
const signaturePosition = ref(props.signaturePosition); const signaturePosition = ref(props.signaturePosition);
const signatureSeparator = ref(props.signatureSeparator); const signatureSeparator = ref(props.signatureSeparator);
const isSaving = ref(false); const isSaving = ref(false);
@ -134,7 +134,7 @@ const messagePreview = computed(() => {
const loadSignatureForSelection = () => { const loadSignatureForSelection = () => {
if (isDefaultSelected.value) { if (isDefaultSelected.value) {
signature.value = props.messageSignature; signature.value = props.messageSignature ?? '';
signaturePosition.value = props.signaturePosition; signaturePosition.value = props.signaturePosition;
signatureSeparator.value = props.signatureSeparator; signatureSeparator.value = props.signatureSeparator;
return; return;
@ -142,12 +142,12 @@ const loadSignatureForSelection = () => {
const inboxSig = getInboxSignature(selectedInboxId.value); const inboxSig = getInboxSignature(selectedInboxId.value);
if (inboxSig) { if (inboxSig) {
signature.value = inboxSig.message_signature; signature.value = inboxSig.message_signature ?? '';
signaturePosition.value = inboxSig.signature_position || 'top'; signaturePosition.value = inboxSig.signature_position || 'top';
signatureSeparator.value = inboxSig.signature_separator || 'blank'; signatureSeparator.value = inboxSig.signature_separator || 'blank';
} else { } else {
// Pre-fill with global signature for convenience // Pre-fill with global signature for convenience
signature.value = props.messageSignature; signature.value = props.messageSignature ?? '';
signaturePosition.value = props.signaturePosition; signaturePosition.value = props.signaturePosition;
signatureSeparator.value = props.signatureSeparator; signatureSeparator.value = props.signatureSeparator;
} }