import React, { useEffect, useState } from "react"; import styles from "./Transactions.module.css"; import { useParams } from "react-router-dom"; import { ColorRing } from "react-loader-spinner"; import { getTransactions, confirmTransaction, declineTransaction, } from "../helpers/transactionHelpers"; import { getTables } from "../helpers/tableHelper"; import TableCanvas from "../components/TableCanvas"; export default function Transactions({ propsShopId, sendParam, deviceType }) { const { shopId, tableId } = useParams(); if (sendParam) sendParam({ shopId, tableId }); const [tables, setTables] = useState([]); const [selectedTable, setSelectedTable] = useState(null); const [transactions, setTransactions] = useState([]); const [isPaymentLoading, setIsPaymentLoading] = useState(false); useEffect(() => { const fetchTransactions = async () => { try { const response = await getTransactions(shopId || propsShopId, 5); setTransactions(response); } catch (error) { console.error("Error fetching transactions:", error); } }; fetchTransactions(); }, [shopId || propsShopId]); useEffect(() => { const fetchData = async () => { try { const fetchedTables = await getTables(shopId || propsShopId); setTables(fetchedTables); } catch (error) { console.error("Error fetching tables:", error); } }; fetchData(); }, [shopId || propsShopId]); const calculateTotalPrice = (detailedTransactions) => { return detailedTransactions.reduce((total, dt) => { return total + dt.qty * dt.Item.price; }, 0); }; const handleConfirm = async (transactionId) => { setIsPaymentLoading(true); try { const c = await confirmTransaction(transactionId); if (c) { // Update the confirmed status locally setTransactions((prevTransactions) => prevTransactions.map((transaction) => transaction.transactionId === transactionId ? { ...transaction, confirmed: 1 } // Set to confirmed : transaction ) ); } } catch (error) { console.error("Error processing payment:", error); } finally { setIsPaymentLoading(false); } }; const handleDecline = async (transactionId) => { setIsPaymentLoading(true); try { const c = await declineTransaction(transactionId); if (c) { // Update the confirmed status locally setTransactions((prevTransactions) => prevTransactions.map((transaction) => transaction.transactionId === transactionId ? { ...transaction, confirmed: -1 } // Set to confirmed : transaction ) ); } } catch (error) { console.error("Error processing payment:", error); } finally { setIsPaymentLoading(false); } }; return (