From 3bf0a5839cde3ca159208840186b8200e04d108f Mon Sep 17 00:00:00 2001 From: Vishesh 'ironeagle' Bangotra Date: Tue, 11 Nov 2025 18:33:40 +0530 Subject: [PATCH] register function in Author contexts --- src/blog/providers/Author.tsx | 19 ++++++++++++++++++- src/blog/types/contexts.ts | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/blog/providers/Author.tsx b/src/blog/providers/Author.tsx index ed48105..99e09a2 100644 --- a/src/blog/providers/Author.tsx +++ b/src/blog/providers/Author.tsx @@ -12,6 +12,22 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children const [loading, setLoading] = useState(false); const [error, setError] = useState(null); + /** 🔹 Register new user */ + const register = async (username: string, email: string, password: string) => { + try { + setLoading(true); + setError(null); + + const res = await api.post('/auth/register', { username, email, password }); + return res.data; // returns PublicUser from backend + } catch (err: any) { + console.error('Registration failed:', err); + setError(err.response?.data?.detail || 'Registration failed'); + } finally { + setLoading(false); + } + }; + /** 🔹 Login and store JWT token */ const login = async (email: string, password: string) => { try { @@ -52,7 +68,7 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children setAuthors(res.data); } catch (err: any) { console.error('Failed to fetch authors:', err); - setError(err.message || 'Failed to fetch authors'); + setError(err.response?.data?.detail || 'Failed to fetch authors'); } finally { setLoading(false); } @@ -85,6 +101,7 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children error, login, logout, + register, refreshAuthors, }} > diff --git a/src/blog/types/contexts.ts b/src/blog/types/contexts.ts index 2f12ed6..e9f3f7e 100644 --- a/src/blog/types/contexts.ts +++ b/src/blog/types/contexts.ts @@ -14,6 +14,7 @@ export interface AuthContextModel { loading: boolean; error: string | null; login: (email: string, password: string) => Promise; + register: (username: string, email: string, password: string) => Promise; logout: () => void; refreshAuthors: () => Promise; }