import React, { useState, useEffect } from 'react'; import styles from './LinktreePage.module.css'; // Import the module.css file import { loginUser } from "../helpers/userHelpers"; import { ThreeDots } from "react-loader-spinner"; import { useNavigate } from "react-router-dom"; import { getLocalStorage, removeLocalStorage } from "../helpers/localStorageHelpers"; import { getAllCafeOwner, createCafeOwner } from "../helpers/userHelpers"; import { getOwnedCafes, createCafe, updateCafe } from "../helpers/cafeHelpers"; import { getMyTransactions } from "../helpers/transactionHelpers"; import { unsubscribeUser } from "../helpers/subscribeHelpers.js"; import Header from '../components/Header'; const LinktreePage = ({ user, setModal }) => { const navigate = useNavigate(); const [inputtingPassword, setInputtingPassword] = useState(false); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(false); const [items, setItems] = useState([]); const [isCreating, setIsCreating] = useState(false); const [newItem, setNewItem] = useState({ name: "", type: "" }); const [isModalOpen, setIsModalOpen] = useState(false); const [expanded, setIsExpand] = useState(false); const [expandedCafeId, setExpandedCafeId] = useState(null); // Track which cafe is expanded const handleToggleExpand = (cafeId) => { setExpandedCafeId(expandedCafeId === cafeId ? null : cafeId); // Toggle expand for a specific cafe }; const handleMyTransactions = async () => { try { setError(false); setLoading(true); const response = await getMyTransactions(); if (response) { console.log(response) return response; } else { setError(true); // Trigger error state in the button console.error('Login failed'); } } catch (error) { setError(true); console.error('Error occurred while logging in:', error.message); } finally { setLoading(false); // Ensure loading state is cleared } }; const handleLogin = async () => { try { setError(false); setLoading(true); const response = await loginUser(username, password); if (response.success) { localStorage.setItem('auth', response.token); if (response.cafeId !== null) { window.location.href = response.cafeId; } else { let destination = '/'; window.location.href = destination; } } else { setError(true); // Trigger error state in the button console.error('Login failed'); } } catch (error) { setError(true); console.error('Error occurred while logging in:', error.message); } finally { setLoading(false); // Ensure loading state is cleared } }; const handleModalClose = () => { setIsModalOpen(false); }; const handleLogout = () => { removeLocalStorage("auth"); unsubscribeUser(); navigate(0); }; useEffect(() => { if (user && user.roleId === 0) { setLoading(true); getAllCafeOwner() .then((data) => { setItems(data); setLoading(false); }) .catch((error) => { console.error("Error fetching cafe owners:", error); setLoading(false); }); } if (user && user.roleId === 1) { setLoading(true); getOwnedCafes(user.userId) .then((data) => { setItems(data); setLoading(false); }) .catch((error) => { console.error("Error fetching owned cafes:", error); setLoading(false); }); } if (user && user.roleId == 3) { handleMyTransactions() .then((data) => { setItems(data); setLoading(false); }) .catch((error) => { console.error("Error fetching owned cafes:", error); setLoading(false); }); } }, [user]); const handleCreateItem = () => { if (user.roleId < 1) { // Create admin functionality createCafeOwner(newItem.email, newItem.username, newItem.password) .then((newitem) => { setItems([...items, { userId: newitem.userId, name: newitem.username }]); setIsCreating(false); setNewItem({ name: "", type: "" }); }) .catch((error) => { console.error("Error creating admin:", error); }); } else { // Create cafe functionality createCafe(newItem.name) .then((newitem) => { setItems([...items, { cafeId: newitem.cafeId, name: newitem.name }]); setIsCreating(false); setNewItem({ name: "", type: "" }); }) .catch((error) => { console.error("Error creating cafe:", error); }); } }; return (
e.target.src = '/fallback-image.png'}
/>
Quantity: {detailedTransaction.qty}
{detailedTransaction.Item && (Price: {detailedTransaction.Item.price}