From c7d2526afec5ffb8918c20d7c1c58852f1c647bd Mon Sep 17 00:00:00 2001 From: l3wdfut4pwr Date: Tue, 21 Apr 2026 13:33:46 +0300 Subject: minor profile changes --- src/app/settings/page.tsx | 2 +- src/components/header/authdialog/LoginForm.tsx | 2 +- src/components/header/authdialog/register.ts | 32 +++++++++++------------ src/components/settings/AboutMe.tsx | 36 ++++++++++++++++++++++++++ src/components/settings/ProfilePage.tsx | 30 ++++++++++++++++----- 5 files changed, 77 insertions(+), 25 deletions(-) create mode 100644 src/components/settings/AboutMe.tsx (limited to 'src') diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index c44b787..5f630d1 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -7,7 +7,7 @@ import SecurityPage from '@/components/settings/SecurityPage'; import ProfilePage from '@/components/settings/ProfilePage'; import { Dialog, DialogTrigger, DialogContent } from '@/components/ui/dialog'; import { AuthDialog } from '@/components/header/AuthDialog'; - +//import ProfileDescription from '@/components/settings/ProfileDescription'; export default function Settings() { const user = useUser(); const [tab, setTab] = useState('profile'); diff --git a/src/components/header/authdialog/LoginForm.tsx b/src/components/header/authdialog/LoginForm.tsx index 913ca66..1dc2df4 100644 --- a/src/components/header/authdialog/LoginForm.tsx +++ b/src/components/header/authdialog/LoginForm.tsx @@ -54,7 +54,7 @@ export default function LoginForm({ redirectTo }: { redirectTo?: string }) { }); if (!meRes.ok) throw new Error('Failed to fetch user'); const meData = await meRes.json(); - setUser(meData); + setUser(meData.authenticated ? meData.user : null); if (redirectTo) router.push(redirectTo); } } catch (err) { diff --git a/src/components/header/authdialog/register.ts b/src/components/header/authdialog/register.ts index 46a59f2..3098df7 100644 --- a/src/components/header/authdialog/register.ts +++ b/src/components/header/authdialog/register.ts @@ -45,14 +45,18 @@ export const registerUser = async ( try { const res = await fetch(`${API_URL}/api/auth/register`, { method: 'POST', - headers: { 'Content-Type': 'application/json' }, + headers: { + 'Content-Type': 'application/json', + }, body: JSON.stringify({ username, email, password }), credentials: 'include', }); if (!res.ok) { - const data = await res.json(); - const { field, message } = data.detail || {}; + const errorData = await res.json(); + + const { field, message } = errorData.detail || {}; + return { data: null, error: field @@ -61,20 +65,16 @@ export const registerUser = async ( }; } - const meRes = await fetch(`${API_URL}/api/me`, { - credentials: 'include', - }); - - if (!meRes.ok) { - throw new Error( - 'Не удалось получить данные пользователя после регистрации', - ); - } - - const meData = await meRes.json(); + const user = await res.json(); - return { data: meData, error: null }; + return { + data: user, + error: null, + }; } catch (err: any) { - return { data: null, error: { general: err.message } }; + return { + data: null, + error: { general: err.message }, + }; } }; diff --git a/src/components/settings/AboutMe.tsx b/src/components/settings/AboutMe.tsx new file mode 100644 index 0000000..b065a26 --- /dev/null +++ b/src/components/settings/AboutMe.tsx @@ -0,0 +1,36 @@ +import { useState } from 'react'; + +export default function AboutMe() { + const maxLength = 250; + const [text, setText] = useState(''); + + const handleChange = (e) => { + const value = e.target.value; + + if (value.length <= maxLength) { + setText(value); + } + }; + + return ( +
+

+ ОБО МНЕ +

+ +
+ + +

+ {maxLength - text.length} +

+
+ + +
+ ); +} diff --git a/src/components/settings/ProfilePage.tsx b/src/components/settings/ProfilePage.tsx index 9d5b81b..cac8e7e 100644 --- a/src/components/settings/ProfilePage.tsx +++ b/src/components/settings/ProfilePage.tsx @@ -1,9 +1,10 @@ import { InputField } from '@/components/ui/inputfield'; -import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui'; import { Separator } from '@/components/ui'; - +import { useState } from 'react'; export default function ProfilePage() { + const maxLength = 250; + const [about, setAbout] = useState(''); return (
@@ -16,14 +17,29 @@ export default function ProfilePage() {

ОБО МНЕ

-
- -

- 250 + +

+