Able to view profile

This commit is contained in:
2026-07-01 23:55:20 -04:00
parent fefb97819f
commit 08a5e484a2
4 changed files with 120 additions and 76 deletions
+7 -4
View File
@@ -23,10 +23,13 @@ export const loginApi = {
export const userApi = {
get_user_profile: async (userId) => {
const reponse = await fetch(`${AUTH_API_BASE_URL}/api/v1/user/profile/${userId}`, {
method: 'GET',
headers: { 'Content-Type': 'application/json' },
});
const reponse = await fetch(
`${AUTH_API_BASE_URL}/api/v1/user/profile/${userId}`,
{
method: 'GET',
headers: { 'Content-Type': 'application/json' },
}
);
if (reponse.ok) {
return reponse.json();
-1
View File
@@ -41,7 +41,6 @@ const Dashboard = () => {
};
const handleNavClick = (view) => {
console.log(view);
if (view === 'profile') {
navigate('/user/profile');
} else {
+3 -2
View File
@@ -5,6 +5,7 @@
border: 1px solid #ccc;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
background-color: #ffffff;
}
.profile-form h2 {
@@ -27,8 +28,8 @@
display: block;
}
.profile-form input[type="text"],
.profile-form input[type="tel"] {
.profile-form input[type='text'],
.profile-form input[type='tel'] {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
+110 -69
View File
@@ -1,4 +1,5 @@
import React, { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import { tokenService } from '../services/TokenService';
import { userApi } from '../api/loginApi';
@@ -6,23 +7,23 @@ import { userApi } from '../api/loginApi';
import './ProfileForm.css';
const ProfileForm = () => {
const navigate = useNavigate();
const [activeView, setActiveView] = useState('profile');
const [formData, setFormData] = useState({
firstname: '',
lastname: '',
phone: '',
username: '',
createdDate: new Date().toISOString().split('T')[0],
lastLoginDate: new Date().toISOString().split('T')[0]
lastLoginDate: new Date().toISOString().split('T')[0],
});
useEffect(() => {
const fetchData = async () => {
console.log('Getting data');
const userId = tokenService.getUserId();
const response = await userApi.get_user_profile(userId);
if (response) {
console.log('Response is good');
const userProfile = response.data[0];
setFormData((prev) => ({
...prev,
@@ -31,15 +32,14 @@ const ProfileForm = () => {
phone: userProfile.phone_number,
username: userProfile.username,
createdDate: userProfile.created,
lastLoginDate: userProfile.last_login
lastLoginDate: userProfile.last_login,
}));
} else {
console.error("Error getting user profile");
console.error('Error getting user profile');
}
};
fetchData();
}, []);
const handleChange = (e) => {
@@ -47,72 +47,113 @@ const ProfileForm = () => {
setFormData({ ...formData, [name]: value });
};
const handleNavClick = (view) => {
if (view === 'profile') {
navigate('/user/profile');
} else {
navigate(`/${view}`);
}
};
return (
<div className="profile-form">
<h2>Profile Form</h2>
<form>
<div>
<label htmlFor="firstname">First Name:</label>
<input
type="text"
id="firstname"
name="firstname"
value={formData.firstname}
onChange={handleChange}
/>
<div className="dashboard-container">
{/* Navbar */}
<nav className="dashboard-nav">
<div className="nav-logo">
<span className="logo-text">Dashboard</span>
</div>
<div>
<label htmlFor="lastname">Last Name:</label>
<input
type="text"
id="lastname"
name="lastname"
value={formData.lastname}
onChange={handleChange}
/>
<div className="nav-links">
<button
className={`nav-link ${activeView === 'dashboard' ? 'active' : ''}`}
onClick={() => handleNavClick('dashboard')}
>
Dashboard
</button>
<button
className={`nav-link ${activeView === 'settings' ? 'active' : ''}`}
onClick={() => handleNavClick('settings')}
>
Settings
</button>
<button
className={`nav-link ${activeView === 'profile' ? 'active' : ''}`}
onClick={() => handleNavClick('profile')}
>
Profile
</button>
</div>
<div>
<label htmlFor="phone">Phone:</label>
<input
type="tel"
id="phone"
name="phone"
value={formData.phone}
onChange={handleChange}
/>
</div>
<div>
<label htmlFor="username">Username:</label>
<input
type="text"
id="username"
name="username"
value={formData.username}
onChange={handleChange}
readOnly
/>
</div>
<div>
<label htmlFor="createdDate">Created Date:</label>
<input
type="text"
id="createdDate"
name="createdDate"
value={formData.createdDate}
readOnly
/>
</div>
<div>
<label htmlFor="lastLoginDate">Last Login Date:</label>
<input
type="text"
id="lastLoginDate"
name="lastLoginDate"
value={formData.lastLoginDate}
readOnly
/>
</div>
</form>
</nav>
{/* Main Content */}
<div className="profile-form">
<h2>User Profile</h2>
<form>
<div>
<label htmlFor="firstname">First Name:</label>
<input
type="text"
id="firstname"
name="firstname"
value={formData.firstname}
onChange={handleChange}
readOnly
/>
</div>
<div>
<label htmlFor="lastname">Last Name:</label>
<input
type="text"
id="lastname"
name="lastname"
value={formData.lastname}
onChange={handleChange}
readOnly
/>
</div>
<div>
<label htmlFor="phone">Phone:</label>
<input
type="tel"
id="phone"
name="phone"
value={formData.phone}
onChange={handleChange}
readOnly
/>
</div>
<div>
<label htmlFor="username">Username:</label>
<input
type="text"
id="username"
name="username"
value={formData.username}
onChange={handleChange}
readOnly
/>
</div>
<div>
<label htmlFor="createdDate">Created Date:</label>
<input
type="text"
id="createdDate"
name="createdDate"
value={formData.createdDate}
readOnly
/>
</div>
<div>
<label htmlFor="lastLoginDate">Last Login Date:</label>
<input
type="text"
id="lastLoginDate"
name="lastLoginDate"
value={formData.lastLoginDate}
readOnly
/>
</div>
</form>
</div>
</div>
);
};