diff --git a/src/broadcasts/broadcasts.ts b/src/broadcasts/broadcasts.ts index 925adfaa..6c308992 100644 --- a/src/broadcasts/broadcasts.ts +++ b/src/broadcasts/broadcasts.ts @@ -106,6 +106,23 @@ export class Broadcasts { id: string, payload: UpdateBroadcastOptions, ): Promise { + if (payload.react) { + if (!this.renderAsync) { + try { + const { renderAsync } = await import('@react-email/render'); + this.renderAsync = renderAsync; + } catch { + throw new Error( + 'Failed to render React component. Make sure to install `@react-email/render`', + ); + } + } + + payload.html = await this.renderAsync( + payload.react as React.ReactElement, + ); + } + const data = await this.resend.patch( `/broadcasts/${id}`, { diff --git a/src/broadcasts/interfaces/update-broadcast.interface.ts b/src/broadcasts/interfaces/update-broadcast.interface.ts index b3d8fd5e..644be559 100644 --- a/src/broadcasts/interfaces/update-broadcast.interface.ts +++ b/src/broadcasts/interfaces/update-broadcast.interface.ts @@ -4,15 +4,16 @@ export interface UpdateBroadcastResponseSuccess { id: string; } -export interface UpdateBroadcastOptions { +export type UpdateBroadcastOptions = { name?: string; audienceId?: string; from?: string; html?: string; + react?: React.ReactNode; text?: string; subject?: string; replyTo?: string[]; previewText?: string; -} +}; export type UpdateBroadcastResponse = Response;