From 25abc55da1269741ab74b584248fde7a3d79c21f Mon Sep 17 00:00:00 2001 From: Local Administrator Date: Wed, 3 Jun 2026 14:39:12 +0000 Subject: [PATCH] feat(avbeat): point forum + auth at av schema, swap newsletter chips to AV verticals MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Schema wiring — AV Beat was inheriting a 'bb' default schema from the original fork. Fixed three call sites so the AV Beat app reads/writes the av schema unless an explicit NEXT_PUBLIC_SUPABASE_SCHEMA override is set: - src/lib/supabase/client.tsx:8 default 'bb' -> 'av' - src/lib/supabase/server.tsx:11 default 'bb' -> 'av' - src/app/api/auth/lookup-email/route.ts :31 + :42 hardcoded .schema('bb') -> .schema('av') so signup lookup hits the AV-side subscriber tables, not BB's. Newsletter signup — homepage chips were the BB taxonomy ('Broadcast', 'Post Production', 'Animation', 'AI & Automation', 'Live Production', 'NAB Show'). Swapped for pro-AV verticals that align with the new forum categories: Conference Rooms & UC, Digital Signage, Live Events & Staging, Displays & LED, Audio, AV over IP, InfoComm & ISE. Default selected flipped from 'Broadcast' to 'Conference Rooms & UC' so the form doesn't pre-select a non-existent value. --- src/app/api/auth/lookup-email/route.ts | 4 ++-- src/app/home-page/components/NewsletterSignup.tsx | 15 ++++++++------- src/lib/supabase/client.tsx | 2 +- src/lib/supabase/server.tsx | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/app/api/auth/lookup-email/route.ts b/src/app/api/auth/lookup-email/route.ts index b1aac52..12a42fb 100644 --- a/src/app/api/auth/lookup-email/route.ts +++ b/src/app/api/auth/lookup-email/route.ts @@ -28,7 +28,7 @@ export async function GET(req: NextRequest) { // Layer 1 — the rich subscriber registry (95k+ rows) const { data: sub } = await svc - .schema("bb") + .schema("av") .from("email_subscribers") .select("id, status") .eq("email_domain", email.split("@")[1]) @@ -39,7 +39,7 @@ export async function GET(req: NextRequest) { // Layer 2 — the lean property-specific list const { data: nl } = await svc - .schema("bb") + .schema("av") .from("newsletter_subscribers") .select("id") .ilike("email", email) diff --git a/src/app/home-page/components/NewsletterSignup.tsx b/src/app/home-page/components/NewsletterSignup.tsx index 3c31e26..9bac104 100644 --- a/src/app/home-page/components/NewsletterSignup.tsx +++ b/src/app/home-page/components/NewsletterSignup.tsx @@ -2,17 +2,18 @@ import React, { useState, useId } from "react"; const categories = [ - "Broadcast", - "Post Production", - "Animation", - "AI & Automation", - "Live Production", - "NAB Show", + "Conference Rooms & UC", + "Digital Signage", + "Live Events & Staging", + "Displays & LED", + "Audio", + "AV over IP", + "InfoComm & ISE", ]; export default function NewsletterSignup() { const [email, setEmail] = useState(""); - const [selected, setSelected] = useState(["Broadcast"]); + const [selected, setSelected] = useState(["Conference Rooms & UC"]); const [submitted, setSubmitted] = useState(false); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); diff --git a/src/lib/supabase/client.tsx b/src/lib/supabase/client.tsx index 565c725..6ef4014 100644 --- a/src/lib/supabase/client.tsx +++ b/src/lib/supabase/client.tsx @@ -5,7 +5,7 @@ export function createClient() { process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, { - db: { schema: process.env.NEXT_PUBLIC_SUPABASE_SCHEMA || 'bb' }, + db: { schema: process.env.NEXT_PUBLIC_SUPABASE_SCHEMA || 'av' }, cookies: { getAll() { if (typeof document === 'undefined') return []; diff --git a/src/lib/supabase/server.tsx b/src/lib/supabase/server.tsx index a1b42f9..70efb8a 100644 --- a/src/lib/supabase/server.tsx +++ b/src/lib/supabase/server.tsx @@ -8,7 +8,7 @@ export async function createClient() { process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, { - db: { schema: process.env.NEXT_PUBLIC_SUPABASE_SCHEMA || 'bb' }, + db: { schema: process.env.NEXT_PUBLIC_SUPABASE_SCHEMA || 'av' }, cookies: { getAll() { return cookieStore.getAll();