disable beta sign up email blasts
This commit is contained in:
@@ -11,6 +11,7 @@ export async function POST(req: Request) {
|
|||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify(body),
|
body: JSON.stringify(body),
|
||||||
|
cache: "no-store",
|
||||||
});
|
});
|
||||||
|
|
||||||
// Always return ok=true (matches your server behavior)
|
// Always return ok=true (matches your server behavior)
|
||||||
|
|||||||
+27
-6
@@ -13,6 +13,7 @@ export default function HomePage() {
|
|||||||
|
|
||||||
async function handleSubmit(e: FormEvent) {
|
async function handleSubmit(e: FormEvent) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
if (!email) {
|
if (!email) {
|
||||||
setMessage("Drop an email in first, operator.");
|
setMessage("Drop an email in first, operator.");
|
||||||
setStatus("error");
|
setStatus("error");
|
||||||
@@ -30,11 +31,12 @@ export default function HomePage() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!res.ok) {
|
if (!res.ok) {
|
||||||
throw new Error("Failed to save your signup.");
|
const txt = await res.text().catch(() => "");
|
||||||
|
throw new Error(txt || "Failed to save your signup.");
|
||||||
}
|
}
|
||||||
|
|
||||||
setStatus("success");
|
setStatus("success");
|
||||||
setMessage("You’re locked in. Watch your inbox.");
|
setMessage("✅ You’re on the list. Invites drop soon — we’ll email your access link when it’s go-time.");
|
||||||
setEmail("");
|
setEmail("");
|
||||||
setUseCase("");
|
setUseCase("");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -160,7 +162,8 @@ export default function HomePage() {
|
|||||||
value={email}
|
value={email}
|
||||||
onChange={(e) => setEmail(e.target.value)}
|
onChange={(e) => setEmail(e.target.value)}
|
||||||
placeholder="you@gearjunkie.com"
|
placeholder="you@gearjunkie.com"
|
||||||
className="mt-1 w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-sm text-zinc-50 outline-none ring-amber-500/30 placeholder:text-zinc-600 focus:border-amber-400/80 focus:ring-2"
|
disabled={status === "loading" || status === "success"}
|
||||||
|
className="mt-1 w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-sm text-zinc-50 outline-none ring-amber-500/30 placeholder:text-zinc-600 focus:border-amber-400/80 focus:ring-2 disabled:opacity-60 disabled:cursor-not-allowed"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -178,17 +181,22 @@ export default function HomePage() {
|
|||||||
value={useCase}
|
value={useCase}
|
||||||
onChange={(e) => setUseCase(e.target.value)}
|
onChange={(e) => setUseCase(e.target.value)}
|
||||||
rows={3}
|
rows={3}
|
||||||
|
disabled={status === "loading" || status === "success"}
|
||||||
placeholder="E.g. Comparing build costs, finding the best deals, sharing my builds, weird influencer shit..."
|
placeholder="E.g. Comparing build costs, finding the best deals, sharing my builds, weird influencer shit..."
|
||||||
className="mt-1 w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-xs text-zinc-50 outline-none ring-amber-500/30 placeholder:text-zinc-600 focus:border-amber-400/80 focus:ring-2"
|
className="mt-1 w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-xs text-zinc-50 outline-none ring-amber-500/30 placeholder:text-zinc-600 focus:border-amber-400/80 focus:ring-2 disabled:opacity-60 disabled:cursor-not-allowed"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
disabled={status === "loading"}
|
disabled={status === "loading" || status === "success"}
|
||||||
className="flex w-full items-center justify-center rounded-md border border-amber-500/70 bg-amber-500/90 px-3 py-2 text-sm font-medium text-black transition hover:bg-amber-400 disabled:cursor-not-allowed disabled:opacity-70"
|
className="flex w-full items-center justify-center rounded-md border border-amber-500/70 bg-amber-500/90 px-3 py-2 text-sm font-medium text-black transition hover:bg-amber-400 disabled:cursor-not-allowed disabled:opacity-70"
|
||||||
>
|
>
|
||||||
{status === "loading" ? "Enlisting…" : "Get Beta Access"}
|
{status === "loading"
|
||||||
|
? "Enlisting…"
|
||||||
|
: status === "success"
|
||||||
|
? "On the List ✅"
|
||||||
|
: "Get Beta Access"}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
{message && (
|
{message && (
|
||||||
@@ -205,6 +213,19 @@ export default function HomePage() {
|
|||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{status === "success" && (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => {
|
||||||
|
setStatus("idle");
|
||||||
|
setMessage(null);
|
||||||
|
}}
|
||||||
|
className="w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-xs text-zinc-200 hover:bg-zinc-900"
|
||||||
|
>
|
||||||
|
Submit another email
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
|
||||||
<div className="mt-6 text-center text-[11px] text-zinc-500">
|
<div className="mt-6 text-center text-[11px] text-zinc-500">
|
||||||
Already invited?{" "}
|
Already invited?{" "}
|
||||||
<a href="/login" className="underline hover:text-zinc-300">
|
<a href="/login" className="underline hover:text-zinc-300">
|
||||||
|
|||||||
Reference in New Issue
Block a user