From 42a5d2de33564c060d2d6f3cefdd3cf21c26a996 Mon Sep 17 00:00:00 2001
From: l3wdfut4pwr <l3wdfut4pwr@gmail.com>
Date: Mon, 27 Apr 2026 22:43:13 +0300
Subject: add password change

---
 src/lib/api/ChangeEmail.tsx | 49 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 src/lib/api/ChangeEmail.tsx

(limited to 'src/lib/api/ChangeEmail.tsx')

diff --git a/src/lib/api/ChangeEmail.tsx b/src/lib/api/ChangeEmail.tsx
new file mode 100644
index 0000000..13d462c
--- /dev/null
+++ b/src/lib/api/ChangeEmail.tsx
@@ -0,0 +1,49 @@
+const API_URL = process.env.NEXT_PUBLIC_API_URL;
+
+type ChangeEmailResponse =
+    | { data: { email: string }; error: null }
+    | { data: null; error: { general: string } };
+
+export const changeEmail = async (
+    email: string,
+    password: string,
+): Promise<ChangeEmailResponse> => {
+    try {
+        const res = await fetch(`${API_URL}/api/users/email`, {
+            method: 'PATCH',
+            headers: {
+                'Content-Type': 'application/json',
+            },
+            credentials: 'include',
+            body: JSON.stringify({ email, password }),
+        });
+
+        const data = await res.json().catch(() => null);
+
+        if (!res.ok) {
+            const detail = data?.detail;
+
+            return {
+                data: null,
+                error: {
+                    general:
+                        typeof detail === 'string'
+                            ? detail
+                            : detail?.msg || 'Ошибка смены почты',
+                },
+            };
+        }
+
+        return {
+            data,
+            error: null,
+        };
+    } catch (err: any) {
+        return {
+            data: null,
+            error: {
+                general: err?.message || 'Network error',
+            },
+        };
+    }
+};
-- 
cgit v1.3-3-g829e

