diff --git a/src/App.jsx b/src/App.jsx
index a524fa0..9e83a6b 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -8,6 +8,7 @@ import {
import Dashboard from './components/Dashboard';
import Login from './components/Login';
import Register from './components/Register';
+import ProfileForm from './components/ProfileForm';
import './App.css';
@@ -19,6 +20,7 @@ function App() {
} />
} />
} />
+ } />
);
diff --git a/src/api/loginApi.js b/src/api/loginApi.js
index 717ab4d..fa9bf41 100644
--- a/src/api/loginApi.js
+++ b/src/api/loginApi.js
@@ -20,3 +20,18 @@ 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' },
+ });
+
+ if (reponse.ok) {
+ return reponse.json();
+ } else {
+ throw new Error('Error logging in');
+ }
+ },
+};
diff --git a/src/components/Dashboard.jsx b/src/components/Dashboard.jsx
index cf5148a..90beef9 100644
--- a/src/components/Dashboard.jsx
+++ b/src/components/Dashboard.jsx
@@ -1,7 +1,7 @@
import { useState } from 'react';
+import { useNavigate } from 'react-router-dom';
import AddContact from './AddContact';
-// import ViewContact from './ViewContact';
import ViewSentMessages from './ViewSentMessages';
import './Dashboard.css';
@@ -9,12 +9,12 @@ import SendMessageWizardModal from './SendMessageWizard/SendMessageWizardModal';
import ViewContactWizardModal from './ViewContactWizard/ViewContactWizardModal';
const Dashboard = () => {
+ const navigate = useNavigate();
const [activeView, setActiveView] = useState('dashboard');
const [isWizardOpen, setIsWizardOpen] = useState(false);
const [isViewContactWizardOpen, setIsViewContactWizardOpen] = useState(false);
const [isViewSentMessagesOpen, setViewSentMessagesOpen] = useState(false);
const [showContactForm, setShowContactForm] = useState(false);
- // const [isPopupOpen, setIsPopupOpen] = useState(false);
const handleAddContactClick = () => {
setShowContactForm(true);
@@ -22,15 +22,9 @@ const Dashboard = () => {
const handleContactSuccess = (contactData) => {
console.log('Contact created successfully:', contactData);
-
- // You could:
- // 1. Refresh the contacts list if you have one
- // 2. Show a success notification
- // 3. Update local state with the new contact
};
const handleWizardComplete = () => {
- // Add your logic here for each button
setIsWizardOpen(false);
};
@@ -47,7 +41,12 @@ const Dashboard = () => {
};
const handleNavClick = (view) => {
- setActiveView(view);
+ console.log(view);
+ if (view === 'profile') {
+ navigate('/user/profile');
+ } else {
+ setActiveView(view);
+ }
};
return (
diff --git a/src/components/ProfileForm.css b/src/components/ProfileForm.css
new file mode 100644
index 0000000..8cb6739
--- /dev/null
+++ b/src/components/ProfileForm.css
@@ -0,0 +1,40 @@
+.profile-form {
+ max-width: 400px;
+ margin: 0 auto;
+ padding: 20px;
+ border: 1px solid #ccc;
+ border-radius: 8px;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+}
+
+.profile-form h2 {
+ text-align: center;
+ margin-bottom: 20px;
+}
+
+.profile-form form {
+ display: flex;
+ flex-direction: column;
+}
+
+.profile-form div {
+ margin-bottom: 15px;
+}
+
+.profile-form label {
+ font-weight: bold;
+ margin-bottom: 5px;
+ display: block;
+}
+
+.profile-form input[type="text"],
+.profile-form input[type="tel"] {
+ width: 100%;
+ padding: 8px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+
+.profile-form input[readonly] {
+ background-color: #f9f9f9;
+}
diff --git a/src/components/ProfileForm.jsx b/src/components/ProfileForm.jsx
new file mode 100644
index 0000000..886bc50
--- /dev/null
+++ b/src/components/ProfileForm.jsx
@@ -0,0 +1,120 @@
+import React, { useState, useEffect } from 'react';
+
+import { tokenService } from '../services/TokenService';
+import { userApi } from '../api/loginApi';
+
+import './ProfileForm.css';
+
+const ProfileForm = () => {
+ const [formData, setFormData] = useState({
+ firstname: '',
+ lastname: '',
+ phone: '',
+ username: '',
+ createdDate: 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,
+ firstname: userProfile.firstname,
+ lastname: userProfile.lastname,
+ phone: userProfile.phone_number,
+ username: userProfile.username,
+ createdDate: userProfile.created,
+ lastLoginDate: userProfile.last_login
+ }));
+ } else {
+ console.error("Error getting user profile");
+ }
+ };
+
+ fetchData();
+
+ }, []);
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setFormData({ ...formData, [name]: value });
+ };
+
+ return (
+
+ );
+};
+
+export default ProfileForm;