All files / src/components/Tranfers/hooks useTransfersStats.tsx

100% Statements 9/9
100% Branches 4/4
100% Functions 3/3
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61        1x             23x   23x                                             23x 138x 92x             23x   23x       23x                  
import { parseAmount } from "@utils/index";
import { useGetTransferStats } from "./useGetTransfers";
import { Stat } from "@features/Products/data.types";
 
export const useTransfersStats = () => {
  //   Sent -> settled
  // requested -> enqueued
  // ready to process -> approved
  // prcessing -> sending
  // failed -> failed
  // declined -> declined
  const { data } = useGetTransferStats();
 
  const stats = [
    {
      title: "Canceled",
      value: data?.canceledCount,
      order: 0,
    },
    {
      title: "Sending",
      value: data?.processingCount,
      order: 2,
    },
    {
      title: "Requested",
      value: data?.enqueuedCount,
      order: 1,
    },
    {
      title: "Sent",
      value: data?.settledCount,
      order: 3,
    },
  ] satisfies (Stat & { order: number })[];
 
  const sortedStats: Stat[] = stats
    .toSorted((a, b) => a.order - b.order)
    .map(({ title, value }) => ({
      title,
      value: (value ?? 0).toLocaleString("en-US", {
        maximumFractionDigits: 2,
      }),
    }));
 
  const totalAmount = (data?.totalAmount || 0) / 100;
 
  const mainStats = [
    { title: "Total", value: totalAmount, isAmount: true },
  ] as Stat[];
 
  return {
    data: {
      totalTransfersAmount: parseAmount(totalAmount),
      stats,
      mainStats,
      sortedStats,
    },
  };
};