s''
This commit is contained in:
@@ -1,15 +1,17 @@
|
||||
"use client";
|
||||
|
||||
import { useState } from "react";
|
||||
import { Link, useLocale, useTranslation } from "@/i18n/navigation";
|
||||
import { Link, useTranslation } from "@/i18n/navigation";
|
||||
import { cities } from "@/app/data/cities";
|
||||
import { apiFetch } from "@/app/lib/api-client";
|
||||
|
||||
const CITY_OPTIONS = cities.map((c) => ({ value: c.name, label: `${c.icon} ${c.name}` }));
|
||||
const CITY_BY_NAME = new Map(cities.map((city) => [city.name, city]));
|
||||
|
||||
export default function HostMeetupPage() {
|
||||
const { t } = useTranslation("hostMeetup");
|
||||
const locale = useLocale();
|
||||
const [submitted, setSubmitted] = useState(false);
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const [form, setForm] = useState({
|
||||
city: "",
|
||||
date: "",
|
||||
@@ -20,9 +22,33 @@ export default function HostMeetupPage() {
|
||||
maxAttendees: "20",
|
||||
});
|
||||
|
||||
const handleSubmit = (e: React.FormEvent) => {
|
||||
const handleSubmit = async (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
setSubmitted(true);
|
||||
const city = CITY_BY_NAME.get(form.city);
|
||||
setSubmitting(true);
|
||||
try {
|
||||
await apiFetch("/api/meetups", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
city: form.city,
|
||||
emoji: city?.icon || "📍",
|
||||
date: form.date,
|
||||
time: form.time,
|
||||
venue: form.venue,
|
||||
address: form.address,
|
||||
description: form.description,
|
||||
rsvpCount: 1,
|
||||
gradientFrom: city?.gradientFrom || "#ff4d4f",
|
||||
gradientTo: city?.gradientTo || "#ff7a45",
|
||||
attendees: [],
|
||||
isUpcoming: true,
|
||||
status: "pending",
|
||||
}),
|
||||
});
|
||||
setSubmitted(true);
|
||||
} finally {
|
||||
setSubmitting(false);
|
||||
}
|
||||
};
|
||||
|
||||
if (submitted) {
|
||||
@@ -183,14 +209,15 @@ export default function HostMeetupPage() {
|
||||
</div>
|
||||
|
||||
<p className="text-xs text-gray-400 dark:text-gray-500">
|
||||
{t("demoHint")}
|
||||
提交后会进入本机 PocketBase 的 meetups 表,审核通过前状态为 pending。
|
||||
</p>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
disabled={submitting}
|
||||
className="w-full py-3.5 rounded-xl bg-[#ff4d4f] text-white font-semibold hover:bg-[#ff7a45] transition-colors"
|
||||
>
|
||||
{t("submit")}
|
||||
{submitting ? "提交中..." : t("submit")}
|
||||
</button>
|
||||
</form>
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user