diff --git a/app/api/posts/route.ts b/app/api/posts/route.ts index d4917b2..9b1e0b0 100644 --- a/app/api/posts/route.ts +++ b/app/api/posts/route.ts @@ -129,6 +129,7 @@ export async function POST(req: Request) { seriesId, tags, isPrivate, + sendToSubscribers, } = await req.json(); if (!title || !content || !author || !content) { @@ -176,8 +177,8 @@ export async function POST(req: Request) { }); } - // 새 글이 공개 글인 경우 구독자들에게 이메일 발송 - if (!post.isPrivate) { + // 공개 글이면서 구독자에게 발행 옵션이 활성화된 경우 이메일 발송 + if (!post.isPrivate && sendToSubscribers) { const { sendNewPostNotifications } = await import( '@/app/lib/email/notifications' ); diff --git a/app/entities/post/write/PostMetadataForm.tsx b/app/entities/post/write/PostMetadataForm.tsx index 5e6480a..9404d3b 100644 --- a/app/entities/post/write/PostMetadataForm.tsx +++ b/app/entities/post/write/PostMetadataForm.tsx @@ -21,6 +21,7 @@ interface PostMetadataFormProps { seriesId?: string; tags: string[]; isPrivate: boolean; + sendToSubscribers: boolean; }; } @@ -37,7 +38,8 @@ const PostMetadataForm = ({ }: PostMetadataFormProps) => { const [tagInput, setTagInput] = useState(''); - const { title, subTitle, seriesId, tags, isPrivate } = formData; + const { title, subTitle, seriesId, tags, isPrivate, sendToSubscribers } = + formData; const selectOptions = series.map((s) => ({ value: s._id, label: s.title, @@ -67,7 +69,15 @@ const PostMetadataForm = ({ }; const handlePublicChange = (e: ChangeEvent) => { - onFieldChange('isPrivate', e.target.checked); + const newIsPrivate = e.target.checked; + onFieldChange('isPrivate', newIsPrivate); + if (newIsPrivate) { + onFieldChange('sendToSubscribers', false); + } + }; + + const handleSendToSubscribersChange = (e: ChangeEvent) => { + onFieldChange('sendToSubscribers', e.target.checked); }; return ( @@ -161,6 +171,21 @@ const PostMetadataForm = ({ /> + {/* 구독자에게 발행 체크박스 */} +
+ +