diff --git a/src/api/History.ts b/src/api/History.ts index 41c7f69f470a18caca904076bae801597ddab599..97a94207f34d25b4ed2e04fc16fceff818b851c0 100644 --- a/src/api/History.ts +++ b/src/api/History.ts @@ -1,13 +1,15 @@ import axios from "axios"; import HistoryInterface from "../interfaces/HistoryInterface"; import HistoryDetailInterface from "../interfaces/HistoryDetailInterface"; +import { getUser } from "../utils/LocalStorage"; const REST_URL = "http://localhost:5000"; // TODO : using env -export async function fetchHistory(username : string) { +export async function fetchHistory() { try { - const API_URL = REST_URL + "/history/" + username; - const response = await axios.get<HistoryInterface[]>(API_URL); + const API_URL = REST_URL + "/history"; + let header = { headers: {"Authorization" : `Bearer ${getUser().jwt}`} }; + const response = await axios.get<HistoryInterface[]>(API_URL, header); return response; } catch(err) { alert(err); diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index 87c79d2a568611aeb2826d29f551d9bdf6dd5ae9..27297a7f9f01cc1633f6df2bd32bc2cdb83b3ef9 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -92,7 +92,7 @@ export default function Navbar() { _hover={{ bg: 'pink.300', }}> - {getUser()} + {getUser().username} </Button> <Button as={'a'} diff --git a/src/interfaces/UserInterface.ts b/src/interfaces/UserInterface.ts index 4a1de14ddb926f2885a1a1d17fc8b26906182981..8af94587f949c1ba276c63404b810cd098e8e154 100644 --- a/src/interfaces/UserInterface.ts +++ b/src/interfaces/UserInterface.ts @@ -1,6 +1,6 @@ export default interface UserInterface { - id : number + id ?: number username : string name : string email : string diff --git a/src/pages/AvailableOrderDetail.tsx b/src/pages/AvailableOrderDetail.tsx index 7fd9a22316b163996650e1c0c0fabedd96112745..546e393e3ff28a98b755c34956673b607eb04b29 100644 --- a/src/pages/AvailableOrderDetail.tsx +++ b/src/pages/AvailableOrderDetail.tsx @@ -29,13 +29,13 @@ export default function AvailableOrderDetail() { const navigate = useNavigate(); function pickOrderAction() { - const username = getUser(); - if(!username) { + const user = getUser(); + if(!user.username) { alert("Perlu log in"); return; } - pickOrder(orderId, username); + pickOrder(orderId, user.username); navigate("/PickedOrder"); } diff --git a/src/pages/Balance.tsx b/src/pages/Balance.tsx index 0908398406539abae956fe3416e9e58e0806a37d..a6c1f4e95016c925a4ab690b2aacb5c8e16b009e 100644 --- a/src/pages/Balance.tsx +++ b/src/pages/Balance.tsx @@ -15,16 +15,16 @@ import { getBalance, withdrawFunction } from '../utils/Balance'; import { getUser } from '../utils/LocalStorage'; export default function Balance() { - const username = getUser(); + const user = getUser(); const [balance, setBalance] = useState(0); const [withdrawBalance, setWithdrawBalance] = useState(0); function handleSubmit() { - if(!username) { + if(!user.username) { alert("Perlu login"); return; } - const response = withdrawFunction(username, withdrawBalance); + const response = withdrawFunction(user.username, withdrawBalance); response.then((success) => { if(success) { setBalance(balance - withdrawBalance); @@ -36,15 +36,15 @@ export default function Balance() { } useEffect(() => { - if(!username) { + if(!user.username) { alert("Perlu login"); return; } - getBalance(username).then((res) => { + getBalance(user.username).then((res) => { console.log(res); setBalance(res.data); }); - }, [username]); + }, [user]); return ( <Flex diff --git a/src/pages/History.tsx b/src/pages/History.tsx index ad57adfc14341fc61c834c95592bcaf6160870c7..99420f65098c1497c4fd026fc7f8d59c06de74a8 100644 --- a/src/pages/History.tsx +++ b/src/pages/History.tsx @@ -6,16 +6,14 @@ import { import HistoryInterface from '../interfaces/HistoryInterface'; import { useEffect, useState } from 'react' import HistoryCard from '../components/HistoryCard'; -import { getUser } from '../utils/LocalStorage'; import { getHistory } from '../utils/History'; export default function History() { - const username = getUser(); const [histories, setHistories] = useState<HistoryInterface[]>([]); useEffect(() => { - const response = getHistory(username ? username : ""); + const response = getHistory(); response.then((history) => { setHistories(history); }); diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx index 0b9985dd2694ac0ba960f418a305f77d0fd9a91f..f1aa3348f25930502a6aef4d5d8565fe734a362d 100644 --- a/src/pages/Login.tsx +++ b/src/pages/Login.tsx @@ -43,9 +43,9 @@ export default function Login() { if(usernameValid) { const response = validateLogin(formData.username, formData.password); - response.then((success) => { - if(success) { - setUser(formData.username); + response.then((responseData) => { + if(responseData !== "gagal") { + setUser(formData.username, responseData); navigate('/'); }else { setPasswordValid(false); diff --git a/src/pages/PickedOrder.tsx b/src/pages/PickedOrder.tsx index 3f37944073af806ed1e2b1a5d980a70f2290e8c8..dc72fa8e7b40c0ae8a73258a4239515b07817071 100644 --- a/src/pages/PickedOrder.tsx +++ b/src/pages/PickedOrder.tsx @@ -12,11 +12,11 @@ import { getUserDetail } from '../utils/Profile'; export default function PickedOrder() { - const username = getUser(); + const user = getUser(); const [orders, setOrders] = useState<OrderInterface[]>([]); useEffect(() => { - getUserDetail(username ? username : "").then( + getUserDetail(user.username ? user.username : "").then( (userDetail) => { const response = getOrderByCourier(userDetail.data.id); response.then((order) => { diff --git a/src/pages/Profile.tsx b/src/pages/Profile.tsx index df775ad24228428bbf2cdd3d3e9b59b906098b64..c8d3a560c46aaf2c21fab60e1ba7a9aecea04fb5 100644 --- a/src/pages/Profile.tsx +++ b/src/pages/Profile.tsx @@ -22,7 +22,8 @@ import { validateEmail } from '../utils/Login'; export default function Profile() { - const username = getUser(); + const user = getUser(); + const username = user.username; const [isEditing, setIsEditing] = useState(false); const [userDetail, setUserDetail] = useState<UserInterface>({username : "", name : "", diff --git a/src/pages/Register.tsx b/src/pages/Register.tsx index 62548a8fc1b1789e9e05a2dd22b91b1c29b3c2e2..a3fe10c7ddff8f9a04cf8f9d6fb99e8c04cdcc77 100644 --- a/src/pages/Register.tsx +++ b/src/pages/Register.tsx @@ -61,8 +61,8 @@ export default function Register() { formData.name, formData.email, formData.password); - response.then(() => { - setUser(formData.username); + response.then((res) => { + setUser(formData.username, res); navigate('/'); }); } diff --git a/src/utils/History.ts b/src/utils/History.ts index f366baadb1c4cb43b414e5f34a250569025a2d63..d676c17031deb21f5a8d978c6cd14c593b8ec0d5 100644 --- a/src/utils/History.ts +++ b/src/utils/History.ts @@ -1,7 +1,7 @@ import { fetchHistory, fetchHistoryById, fetchHistoryDetails } from "../api/History"; -export async function getHistory(username : string) { - const response = await fetchHistory(username); +export async function getHistory() { + const response = await fetchHistory(); const histories = response.data; return histories; } diff --git a/src/utils/LocalStorage.ts b/src/utils/LocalStorage.ts index a82db200659282c4e5a5186770948fc77f17e575..acd397f1e97b823c450d50f37e47973bf1aae88e 100644 --- a/src/utils/LocalStorage.ts +++ b/src/utils/LocalStorage.ts @@ -1,19 +1,22 @@ -export function setUser(username : string) { +export function setUser(username : string, jwt : string) { // TODO : async issue localStorage.setItem('username', username); + localStorage.setItem('jwt', jwt); } export function unsetUser() { localStorage.removeItem('username'); + localStorage.removeItem('jwt'); } export function getUser() { const username = localStorage.getItem('username'); - return username; + const jwt = localStorage.getItem('jwt'); + return {username, jwt}; } export function isLoggedIn() { - const loggedIn = (getUser() !== null); + const loggedIn = (getUser().jwt !== null); return loggedIn; } diff --git a/src/utils/Login.ts b/src/utils/Login.ts index 9a84b4eed7f8e30a5dc0698e87dc387c210cb4f3..6e51a62559728ef2e81c3b6e962c4b55e57b775f 100644 --- a/src/utils/Login.ts +++ b/src/utils/Login.ts @@ -19,12 +19,10 @@ export function validateConfirmPassword(password : string, confirmPassword : str export async function validateRegister(username : string, name : string, email : string, password : string) { const response = await register(username, name, email, password); - const success = (response.data === "success"); - return success; + return response.data; } export async function validateLogin(username : string, password : string) { const response = await login(username, password); - const success = (response.data === "success"); - return success; + return response.data; }