"use client"; import { useState, useEffect, useRef } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from "@/components/ui/select"; import { Bot, Save, User, KeyRound } from "lucide-react"; import { createClient } from "@/lib/supabase/client"; import { updateProfile, updatePassword } from "./actions"; export default function SettingsPage() { const [aiProvider, setAiProvider] = useState("groq"); const [apiKey, setApiKey] = useState(""); const [saveStatus, setSaveStatus] = useState(""); // Profile state const [firstName, setFirstName] = useState(""); const [lastName, setLastName] = useState(""); const [avatarUrl, setAvatarUrl] = useState(""); const [profileSaveStatus, setProfileSaveStatus] = useState(""); const [passwordSaveStatus, setPasswordSaveStatus] = useState(""); const formRef = useRef(null); const supabase = createClient(); useEffect(() => { const savedProvider = localStorage.getItem("mindspace_ai_provider"); const savedApiKey = localStorage.getItem("mindspace_api_key"); if (savedProvider) setAiProvider(savedProvider); if (savedApiKey) setApiKey(savedApiKey); // Fetch user profile async function fetchProfile() { const { data: { user } } = await supabase.auth.getUser(); if (user) { const { data } = await supabase.from("profiles").select("*").eq("id", user.id).single(); if (data) { setFirstName(data.first_name || ""); setLastName(data.last_name || ""); setAvatarUrl(data.avatar_url || ""); } } } fetchProfile(); }, []); const handleSaveAI = () => { localStorage.setItem("mindspace_ai_provider", aiProvider); localStorage.setItem("mindspace_api_key", apiKey); setSaveStatus("Ayarlar başarıyla kaydedildi!"); setTimeout(() => setSaveStatus(""), 3000); }; const handleProfileAction = async (formData: FormData) => { const res = await updateProfile(formData); if (res?.error) { setProfileSaveStatus("Hata: " + res.error); } else { setProfileSaveStatus("Profil başarıyla güncellendi!"); if (formData.get("avatar") && (formData.get("avatar") as File).size > 0) { window.location.reload(); } } setTimeout(() => setProfileSaveStatus(""), 3000); }; const handlePasswordAction = async (formData: FormData) => { const res = await updatePassword(formData); if (res?.error) { setPasswordSaveStatus("Hata: " + res.error); } else { setPasswordSaveStatus("Şifre başarıyla güncellendi!"); formRef.current?.reset(); } setTimeout(() => setPasswordSaveStatus(""), 3000); }; return (

Ayarlar

Kullanıcı profili ve yapay zeka asistanı yapılandırmanızı yönetin.

{/* Profile Settings */}

Kullanıcı Profili

{avatarUrl ? ( Avatar ) : (
)}
setFirstName(e.target.value)} />
setLastName(e.target.value)} />
{profileSaveStatus && ( {profileSaveStatus} )}
{/* Password Settings */}

Şifre Değiştir

{passwordSaveStatus && ( {passwordSaveStatus} )}
{/* AI Settings */}

Terapist (AI) Ayarları

Gizliliğiniz için yerel Ollama önerilir. Sunucunuzda çalışmayan durumlarda OpenAI veya Groq gibi bulut çözümlerine geçebilirsiniz.

{aiProvider !== "ollama" && (
setApiKey(e.target.value)} placeholder="sk-..." />

Anahtarınız sadece tarayıcınızın kendi local hafızasında güvenle saklanır, hiçbir sunucuya kaydedilmez.

)}
{saveStatus && ( {saveStatus} )}
); }