"use client" import { useState, useEffect } from "react" import { useSession } from "next-auth/react" import { User, Mail, Building, Save, Loader2, CheckCircle2, AlertCircle } from "lucide-react" export default function AccountSettingsPage() { const { data: session, update } = useSession() const [loading, setLoading] = useState(false) const [success, setSuccess] = useState("") const [error, setError] = useState("") const [formData, setFormData] = useState({ businessName: "", currentPassword: "", newPassword: "", confirmPassword: "" }) useEffect(() => { // Fetch user's business name (from first store or user name) const fetchBusinessName = async () => { try { const res = await fetch("/api/stores") if (res.ok) { const data = await res.json() const activeStore = data.stores?.find((s: { isActive: boolean }) => s.isActive) if (activeStore?.businessName) { setFormData(prev => ({ ...prev, businessName: activeStore.businessName })) } else if (session?.user?.name) { setFormData(prev => ({ ...prev, businessName: session.user.name || "" })) } } } catch { // Silent fail } } fetchBusinessName() }, [session]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError("") setSuccess("") try { // Validate password change if provided if (formData.newPassword || formData.currentPassword) { if (!formData.currentPassword) { setError("Current password is required to change password") setLoading(false) return } if (formData.newPassword !== formData.confirmPassword) { setError("New passwords do not match") setLoading(false) return } if (formData.newPassword.length < 8) { setError("New password must be at least 8 characters and include upper, lower, number and special character") setLoading(false) return } } const updateData: { businessName?: string; currentPassword?: string; newPassword?: string } = {} if (formData.businessName) { updateData.businessName = formData.businessName } if (formData.newPassword) { updateData.currentPassword = formData.currentPassword updateData.newPassword = formData.newPassword } const res = await fetch("/api/settings/account", { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(updateData) }) if (!res.ok) { const data = await res.json() setError(data.message || "Failed to update account") return } setSuccess("Account updated successfully") setFormData(prev => ({ ...prev, currentPassword: "", newPassword: "", confirmPassword: "" })) // Update session await update() } catch { setError("An error occurred. Please try again.") } finally { setLoading(false) } } return (
Update your business name and password.