From 323b0ea1282abc0945cef1ebf8185bdf9a156f5d Mon Sep 17 00:00:00 2001
From: Sebastien Castiel <sebastien@castiel.me>
Date: Tue, 9 Jan 2024 15:32:19 -0500
Subject: Feedback button

---
 src/components/feedback-button/feedback-button.tsx | 27 ++++++++++++++++++++++
 1 file changed, 27 insertions(+)
 create mode 100644 src/components/feedback-button/feedback-button.tsx

(limited to 'src/components/feedback-button/feedback-button.tsx')

diff --git a/src/components/feedback-button/feedback-button.tsx b/src/components/feedback-button/feedback-button.tsx
new file mode 100644
index 0000000..d43f8a7
--- /dev/null
+++ b/src/components/feedback-button/feedback-button.tsx
@@ -0,0 +1,27 @@
+import { FeedbackButtonClient } from '@/components/feedback-button/feedback-button-client'
+import { formSchema } from '@/components/feedback-button/feedback-button-common'
+import { FeedbackButtonEmail } from '@/components/feedback-button/feedback-button-email'
+import { env } from '@/lib/env'
+import { getResend } from '@/lib/resend'
+
+export function FeedbackButton() {
+  async function sendFeedback(values: unknown) {
+    'use server'
+    const { email, message } = formSchema.parse(values)
+    const resend = getResend()
+    if (!resend || !env.FEEDBACK_EMAIL_FROM || !env.FEEDBACK_EMAIL_TO) {
+      console.warn(
+        'Resend is not properly configured. Feedback email won’t be sent.',
+      )
+      return
+    }
+    await resend.emails.send({
+      from: env.FEEDBACK_EMAIL_FROM,
+      to: env.FEEDBACK_EMAIL_TO,
+      subject: `Spliit: new feedback from ${email || 'anonymous user'}`,
+      react: <FeedbackButtonEmail email={email} message={message} />,
+    })
+  }
+
+  return <FeedbackButtonClient sendFeedback={sendFeedback} />
+}
-- 
cgit v1.3

