@@ -11,7 +11,7 @@ import { isUndefined } from "utils/index";
1111import { decodeURIFilter , useRootPath } from "utils/uri" ;
1212import { DisputeDetailsFragment , useMyCasesQuery } from "queries/useCasesQuery" ;
1313import { useUserQuery } from "queries/useUser" ;
14- import { OrderDirection } from "src/graphql/graphql" ;
14+ import { Dispute_Filter , OrderDirection , UserDetailsFragment } from "src/graphql/graphql" ;
1515
1616import CasesDisplay from "components/CasesDisplay" ;
1717import ConnectWallet from "components/ConnectWallet" ;
@@ -50,6 +50,33 @@ const ConnectWalletContainer = styled.div`
5050 color: ${ ( { theme } ) => theme . primaryText } ;
5151` ;
5252
53+ const calculateStats = ( user : UserDetailsFragment , filter : Dispute_Filter ) => {
54+ const toInt = ( v ) => Number ( v ) || 0 ;
55+ let totalCases , ruledCases ;
56+
57+ if ( ! user ) {
58+ totalCases = 0 ;
59+ ruledCases = 0 ;
60+ } else if ( filter ?. period === "appeal" ) {
61+ totalCases = toInt ( user . totalAppealingDisputes ) ;
62+ ruledCases = 0 ;
63+ } else if ( filter ?. ruled === true ) {
64+ totalCases = toInt ( user . totalResolvedDisputes ) ;
65+ ruledCases = totalCases ;
66+ } else if ( filter ?. ruled === false ) {
67+ totalCases = toInt ( user . disputes ?. length ) ;
68+ ruledCases = 0 ;
69+ } else {
70+ totalCases = toInt ( user . disputes ?. length ) ;
71+ ruledCases = toInt ( user . totalResolvedDisputes ) ;
72+ }
73+
74+ return {
75+ totalCases,
76+ ruledCases,
77+ } ;
78+ } ;
79+
5380const Profile : React . FC = ( ) => {
5481 const { isConnected, address : connectedAddress } = useAccount ( ) ;
5582 const { page, order, filter } = useParams ( ) ;
@@ -69,8 +96,10 @@ const Profile: React.FC = () => {
6996 order === "asc" ? OrderDirection . Asc : OrderDirection . Desc
7097 ) ;
7198 const { data : userData } = useUserQuery ( addressToQuery , decodedFilter ) ;
72- const totalCases = userData ?. user ?. disputes . length ;
73- const totalResolvedCases = parseInt ( userData ?. user ?. totalResolvedDisputes ) ;
99+ const { totalCases, ruledCases : totalResolvedCases } = useMemo (
100+ ( ) => calculateStats ( userData ?. user , decodedFilter ) ,
101+ [ userData ?. user , decodedFilter ]
102+ ) ;
74103 const totalPages = useMemo (
75104 ( ) => ( ! isUndefined ( totalCases ) ? Math . ceil ( totalCases / casesPerPage ) : 1 ) ,
76105 [ totalCases , casesPerPage ]
0 commit comments