diff --git a/web/src/components/CasesDisplay/Stats.tsx b/web/src/components/CasesDisplay/Stats.tsx index 3d8e0b2aa..e877af7ef 100644 --- a/web/src/components/CasesDisplay/Stats.tsx +++ b/web/src/components/CasesDisplay/Stats.tsx @@ -1,15 +1,13 @@ import React from "react"; import styled from "styled-components"; +import { useAllCasesQuery } from "hooks/queries/useAllCasesQuery"; const FieldWrapper = styled.div` display: inline-flex; gap: 8px; `; -const Field: React.FC<{ label: string; value: string }> = ({ - label, - value, -}) => ( +const Field: React.FC<{ label: string; value: string }> = ({ label, value }) => ( {value} @@ -23,21 +21,29 @@ const SeparatorLabel = styled.label` const Separator: React.FC = () => |; -const fields = [ - { label: "Total", value: "600" }, - { label: "In Progress", value: "50" }, - { label: "Closed", value: "550" }, -]; - -const Stats: React.FC = () => ( -
- {fields.map(({ label, value }, i) => ( - - - {i + 1 < fields.length ? : null} - - ))} -
-); +const Stats: React.FC = () => { + const { data } = useAllCasesQuery(); + + const totalDisputes = data?.counter?.cases; + const closedDisputes = data?.counter?.casesRuled; + const inProgressDisputes = (totalDisputes - closedDisputes).toString(); + + const fields = [ + { label: "Total", value: totalDisputes ?? "0" }, + { label: "In Progress", value: inProgressDisputes ?? "0" }, + { label: "Closed", value: closedDisputes ?? "0" }, + ]; + + return ( +
+ {fields.map(({ label, value }, i) => ( + + + {i + 1 < fields.length ? : null} + + ))} +
+ ); +}; export default Stats; diff --git a/web/src/hooks/queries/useAllCasesQuery.ts b/web/src/hooks/queries/useAllCasesQuery.ts new file mode 100644 index 000000000..1e224927d --- /dev/null +++ b/web/src/hooks/queries/useAllCasesQuery.ts @@ -0,0 +1,21 @@ +import { graphql } from "src/graphql"; +import { useQuery } from "@tanstack/react-query"; +import { AllCasesQuery } from "src/graphql/graphql"; +import { graphqlQueryFnHelper } from "utils/graphqlQueryFnHelper"; +export type { AllCasesQuery }; + +const allCasesQuery = graphql(` + query AllCases { + counter(id: 0) { + cases + casesRuled + } + } +`); + +export const useAllCasesQuery = () => { + return useQuery({ + queryKey: [`allCasesQuery`], + queryFn: async () => await graphqlQueryFnHelper(allCasesQuery, {}), + }); +};