diff --git a/apps/mail/components/party.tsx b/apps/mail/components/party.tsx index 10b0578416..b0eec68d60 100644 --- a/apps/mail/components/party.tsx +++ b/apps/mail/components/party.tsx @@ -24,8 +24,14 @@ export const NotificationProvider = ({ headers }: { headers: Record queryClient.invalidateQueries({ queryKey: trpc.labels.list.queryKey() }), + { minQuietPeriodMs: DEBOUNCE_DELAY }, + ); + const threadsDebouncer = funnel( + () => queryClient.invalidateQueries({ queryKey: trpc.mail.listThreads.queryKey() }), + { minQuietPeriodMs: DEBOUNCE_DELAY }, + ); usePartySocket({ party: 'durable-mailbox', diff --git a/apps/server/package.json b/apps/server/package.json index e4128d0060..ed611b61f1 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -45,6 +45,7 @@ "mimetext": "^3.0.27", "p-retry": "6.2.1", "partyserver": "^0.0.71", + "react": "19.0.0", "remeda": "2.21.3", "resend": "^4.5.1", "sanitize-html": "^2.16.0", @@ -56,6 +57,7 @@ "devDependencies": { "@types/he": "1.2.3", "@types/node": "^22.9.0", + "@types/react": "19.0.10", "@types/sanitize-html": "2.13.0", "typescript": "catalog:" } diff --git a/apps/server/src/lib/sanitize-tip-tap-html.ts b/apps/server/src/lib/sanitize-tip-tap-html.ts index 548719ba62..c1f8b7c102 100644 --- a/apps/server/src/lib/sanitize-tip-tap-html.ts +++ b/apps/server/src/lib/sanitize-tip-tap-html.ts @@ -1,8 +1,15 @@ import { Html } from '@react-email/components'; import { render } from '@react-email/render'; import sanitizeHtml from 'sanitize-html'; +import React from 'react'; export const sanitizeTipTapHtml = async (html: string) => { const clean = sanitizeHtml(html); - return render(Html({ dangerouslySetInnerHTML: { __html: clean } })); + return render( + React.createElement( + Html, + {}, + React.createElement('div', { dangerouslySetInnerHTML: { __html: clean } }), + ), + ); }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5674f7dd99..97ebfb1ca6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -530,6 +530,9 @@ importers: partyserver: specifier: ^0.0.71 version: 0.0.71(@cloudflare/workers-types@4.20250514.0) + react: + specifier: 19.0.0 + version: 19.0.0 remeda: specifier: 2.21.3 version: 2.21.3 @@ -558,6 +561,9 @@ importers: '@types/node': specifier: ^22.9.0 version: 22.13.8 + '@types/react': + specifier: 19.0.10 + version: 19.0.10 '@types/sanitize-html': specifier: 2.13.0 version: 2.13.0