Skip to content

Commit d84ceae

Browse files
committed
fix: exportHtml 실패 시 노티 및 제목 trim 불일치 문제 수정
1 parent f952a49 commit d84ceae

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

apps/pyconkr-admin/src/components/pages/notification/email_template_editor.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,22 +118,30 @@ const InnerAdminEmailTemplateEditor: FC = ErrorBoundary.with(
118118
addSnackbar("에디터가 아직 준비되지 않았습니다.", "error");
119119
return;
120120
}
121-
const editor_source = editorRef.current.exportJson();
122-
const emailDocument = editorRef.current.exportEmailDocument();
123-
const subject = emailDocument.meta.subject?.trim();
121+
const exportedDocument = editorRef.current.exportEmailDocument();
122+
const subject = exportedDocument.meta.subject?.trim();
124123
if (!subject) {
125124
addSnackbar("에디터에서 메일 제목(subject)을 입력해주세요.", "error");
126125
return;
127126
}
128127
if (subject.length > MAX_RECOMMENDED_SUBJECT_LENGTH) {
129128
addSnackbar(`메일 제목이 ${subject.length}자입니다. 대부분의 메일 클라이언트에서 뒷부분이 잘립니다.`, "warning");
130129
}
130+
// data.title과 editor_source의 제목이 어긋나지 않도록 trim한 제목으로 맞춥니다.
131+
const emailDocument: EmailDocument = { ...exportedDocument, meta: { ...exportedDocument.meta, subject } };
132+
133+
let data: string;
134+
try {
135+
// 백엔드는 data의 렌더 결과를 그대로 발송 payload로 쓰므로 {title, body} JSON object여야 합니다.
136+
data = JSON.stringify({ title: subject, body: await editorRef.current.exportHTML() });
137+
} catch (e) {
138+
addErrorSnackbar(e instanceof Error ? e : new Error(String(e)));
139+
return;
140+
}
131141

132142
// 저장 성공 시 쿼리가 reset되며 에디터가 initialDocument로 되돌아가므로, 방금 저장한 문서로 맞춰둡니다.
133143
setInitialDocument(emailDocument);
134-
// 백엔드는 data의 렌더 결과를 그대로 발송 payload로 쓰므로 {title, body} JSON object여야 합니다.
135-
const data = JSON.stringify({ title: subject, body: await editorRef.current.exportHTML() });
136-
const payload: EmailTemplatePayload = { ...meta, data, editor_source };
144+
const payload: EmailTemplatePayload = { ...meta, data, editor_source: JSON.stringify(emailDocument, null, 2) };
137145
if (id) {
138146
updateMutation.mutate(payload, {
139147
onSuccess: () => addSnackbar("수정했습니다.", "success"),

0 commit comments

Comments
 (0)