import React, { useState, useEffect } from 'react'; import { withRouter, useParams } from 'react-router-dom'; import axios from "axios"; import M from "materialize-css"; import './Flow.css'; import { formatMoney, timestampToDate } from "../common/formatting"; const Flow = (props) => { const { homie_id } = useParams(); const [flow, setFlow] = useState([]); useEffect( () => { (async () => { try { const response = await axios.get(`/api/money_moves?homie_id=${parseInt(homie_id)}`); if (response.status === 200 && response.data){ setFlow(response.data); } } catch (e) { M.toast({ html: "Yo! It ain't workin'" }); } })(); }, [homie_id]); const dateBlock = (timestamp) => { timestampToDate(timestamp) } const flowData = flow.map( (singleFlowData, index) => (
  • { singleFlowData.description }
    { dateBlock(singleFlowData['created_at']) }
    0 ? 'amount-green' : ''}`}>{ formatMoney(singleFlowData.amount) }
  • )); const totalStats = () => { const totalCount = flow.length; const firstFlowRow = totalCount > 0 ? flow[0] : undefined; const lastFlowRow = totalCount > 0 ? flow[flow.length - 1] : undefined; const totalFlow = flow.reduce((sum, record) => sum + parseInt(record.amount), 0); const fromDate = lastFlowRow ? timestampToDate(lastFlowRow['created_at']) : ''; const toDate = firstFlowRow ? timestampToDate(firstFlowRow['created_at']) : ''; return (

    {`${totalCount} Records`}{` • ${fromDate} - ${toDate}`}
    Total flow: {formatMoney(totalFlow)}
    ) } return (
    { totalStats() }
    ); } export default withRouter(Flow);