From d2445aa97e4265316549d6aa28973c8ae9c370b5 Mon Sep 17 00:00:00 2001 From: sameeranageshwar Date: Sun, 13 Apr 2025 02:07:15 -0400 Subject: [PATCH] profile page --- src/app/(app)/profile/page.tsx | 114 +++++++++++++++++++++++++++++---- 1 file changed, 100 insertions(+), 14 deletions(-) diff --git a/src/app/(app)/profile/page.tsx b/src/app/(app)/profile/page.tsx index b5afb12..ee59290 100644 --- a/src/app/(app)/profile/page.tsx +++ b/src/app/(app)/profile/page.tsx @@ -1,26 +1,112 @@ "use client"; -import React, { useState } from "react"; +// const useDevice = () => ({ +// isAuthenticated: true, +// session: { username: "demo_user" }, +// }); + +import { useDevice } from "@/lib/context/DeviceContext"; +import React, { useEffect, useState } from "react"; export default function ProfilePage() { + const { isAuthenticated, session } = useDevice(); + const [bio, setBio] = useState(""); + const [saved, setSaved] = useState(false); + const [selectedFile, setSelectedFile] = useState(null); const [previewUrl, setPreviewUrl] = useState(null); const [uploadMessage, setUploadMessage] = useState(""); + useEffect(() => { + if (isAuthenticated && session?.username) { + fetch(`/api/user/${session.username}`) + .then((res) => res.json()) + .then((data) => { + if (data.bio) setBio(data.bio); + }); + } + }, [isAuthenticated, session?.username]); + + const handleBioSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + const res = await fetch(`/api/user/${session.username}/bio`, { + method: "PATCH", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ bio }), + }); + if (res.ok) setSaved(true); + }; + return ( -
-

Profile Picture

-
- { - Profile Preview - } - {uploadMessage && ( -

{uploadMessage}

- )} +
+
+

+ Hi, {isAuthenticated ? session.username : ""}!! +

+ +
+ {previewUrl ? ( + Profile Preview + ) : ( +
+ )} + {uploadMessage &&

{uploadMessage}

} +
-
+ +

{bio || "No bio yet..."}

+ +
+