Commit e2c79df7 authored by Max Alekseenko's avatar Max Alekseenko

display apps without security score

parent 21b4dc6b
...@@ -35,11 +35,14 @@ const MarketplaceListWithScores = ({ ...@@ -35,11 +35,14 @@ const MarketplaceListWithScores = ({
showContractList, showContractList,
}: Props) => { }: Props) => {
const displayedApps = React.useMemo(() => const displayedApps = React.useMemo(() => apps.sort((a, b) => {
apps if (!a.securityReport) {
.filter((app) => app.securityReport) return 1;
.sort((a, b) => b.securityReport.overallInfo.securityScore - a.securityReport.overallInfo.securityScore) } else if (!b.securityReport) {
, [ apps ]); return -1;
}
return b.securityReport.overallInfo.securityScore - a.securityReport.overallInfo.securityScore;
}), [ apps ]);
const content = apps.length > 0 ? ( const content = apps.length > 0 ? (
<> <>
......
import { Tooltip, chakra } from '@chakra-ui/react';
import React from 'react';
const DataNotAvailable = () => {
return (
<Tooltip
label="Data will be available soon"
textAlign="center"
padding={ 2 }
openDelay={ 500 }
>
<chakra.span cursor="default" fontWeight="500" fontSize="sm">
n/a
</chakra.span>
</Tooltip>
);
};
export default DataNotAvailable;
import { Flex, IconButton } from '@chakra-ui/react'; import { Flex, IconButton, chakra } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
import type { MouseEvent } from 'react'; import type { MouseEvent } from 'react';
...@@ -25,16 +25,7 @@ type Props = { ...@@ -25,16 +25,7 @@ type Props = {
} }
const ListItem = ({ app, onInfoClick, isFavorite, onFavoriteClick, isLoading, onAppClick, showContractList }: Props) => { const ListItem = ({ app, onInfoClick, isFavorite, onFavoriteClick, isLoading, onAppClick, showContractList }: Props) => {
const { const { id, securityReport } = app;
id,
securityReport,
securityReport: {
overallInfo: {
verifiedNumber,
totalContractsNumber,
},
},
} = app;
const handleInfoClick = React.useCallback((event: MouseEvent) => { const handleInfoClick = React.useCallback((event: MouseEvent) => {
event.preventDefault(); event.preventDefault();
...@@ -98,6 +89,8 @@ const ListItem = ({ app, onInfoClick, isFavorite, onFavoriteClick, isLoading, on ...@@ -98,6 +89,8 @@ const ListItem = ({ app, onInfoClick, isFavorite, onFavoriteClick, isLoading, on
</Flex> </Flex>
<Flex alignItems="center"> <Flex alignItems="center">
<Flex flex={ 1 } gap={ 3 } alignItems="center"> <Flex flex={ 1 } gap={ 3 } alignItems="center">
{ securityReport ? (
<>
<AppSecurityReport <AppSecurityReport
id={ id } id={ id }
securityReport={ securityReport } securityReport={ securityReport }
...@@ -105,11 +98,17 @@ const ListItem = ({ app, onInfoClick, isFavorite, onFavoriteClick, isLoading, on ...@@ -105,11 +98,17 @@ const ListItem = ({ app, onInfoClick, isFavorite, onFavoriteClick, isLoading, on
height="30px" height="30px"
/> />
<ContractListButton onClick={ showAllContracts } variant={ ContractListButtonVariants.ALL_CONTRACTS }> <ContractListButton onClick={ showAllContracts } variant={ ContractListButtonVariants.ALL_CONTRACTS }>
{ totalContractsNumber } { securityReport.overallInfo.totalContractsNumber }
</ContractListButton> </ContractListButton>
<ContractListButton onClick={ showVerifiedContracts } variant={ ContractListButtonVariants.VERIFIED_CONTRACTS }> <ContractListButton onClick={ showVerifiedContracts } variant={ ContractListButtonVariants.VERIFIED_CONTRACTS }>
{ verifiedNumber } { securityReport.overallInfo.verifiedNumber }
</ContractListButton> </ContractListButton>
</>
) : (
<chakra.span fontWeight="500" fontSize="sm">
Data will be available soon
</chakra.span>
) }
</Flex> </Flex>
{ !isLoading && ( { !isLoading && (
<MoreInfoButton onClick={ handleInfoClick }/> <MoreInfoButton onClick={ handleInfoClick }/>
......
...@@ -11,6 +11,7 @@ import IconSvg from 'ui/shared/IconSvg'; ...@@ -11,6 +11,7 @@ import IconSvg from 'ui/shared/IconSvg';
import AppSecurityReport from '../AppSecurityReport'; import AppSecurityReport from '../AppSecurityReport';
import ContractListButton, { ContractListButtonVariants } from '../ContractListButton'; import ContractListButton, { ContractListButtonVariants } from '../ContractListButton';
import AppLink from './AppLink'; import AppLink from './AppLink';
import DataNotAvailable from './DataNotAvailable';
import MoreInfoButton from './MoreInfoButton'; import MoreInfoButton from './MoreInfoButton';
type Props = { type Props = {
...@@ -33,16 +34,7 @@ const TableItem = ({ ...@@ -33,16 +34,7 @@ const TableItem = ({
showContractList, showContractList,
}: Props) => { }: Props) => {
const { const { id, securityReport } = app;
id,
securityReport,
securityReport: {
overallInfo: {
verifiedNumber,
totalContractsNumber,
},
},
} = app;
const handleInfoClick = React.useCallback((event: MouseEvent) => { const handleInfoClick = React.useCallback((event: MouseEvent) => {
event.preventDefault(); event.preventDefault();
...@@ -83,17 +75,29 @@ const TableItem = ({ ...@@ -83,17 +75,29 @@ const TableItem = ({
<AppLink app={ app } isLoading={ isLoading } onAppClick={ onAppClick } isLarge/> <AppLink app={ app } isLoading={ isLoading } onAppClick={ onAppClick } isLarge/>
</Td> </Td>
<Td verticalAlign="middle"> <Td verticalAlign="middle">
{ securityReport ? (
<AppSecurityReport id={ id } securityReport={ securityReport } showContractList={ showContractList }/> <AppSecurityReport id={ id } securityReport={ securityReport } showContractList={ showContractList }/>
) : (
<DataNotAvailable/>
) }
</Td> </Td>
<Td verticalAlign="middle"> <Td verticalAlign="middle">
{ securityReport ? (
<ContractListButton onClick={ showAllContracts } variant={ ContractListButtonVariants.ALL_CONTRACTS }> <ContractListButton onClick={ showAllContracts } variant={ ContractListButtonVariants.ALL_CONTRACTS }>
{ totalContractsNumber } { securityReport.overallInfo.totalContractsNumber }
</ContractListButton> </ContractListButton>
) : (
<DataNotAvailable/>
) }
</Td> </Td>
<Td verticalAlign="middle"> <Td verticalAlign="middle">
{ securityReport ? (
<ContractListButton onClick={ showVerifiedContracts } variant={ ContractListButtonVariants.VERIFIED_CONTRACTS }> <ContractListButton onClick={ showVerifiedContracts } variant={ ContractListButtonVariants.VERIFIED_CONTRACTS }>
{ verifiedNumber } { securityReport.overallInfo.verifiedNumber }
</ContractListButton> </ContractListButton>
) : (
<DataNotAvailable/>
) }
</Td> </Td>
<Td verticalAlign="middle" isNumeric> <Td verticalAlign="middle" isNumeric>
<MoreInfoButton onClick={ handleInfoClick }/> <MoreInfoButton onClick={ handleInfoClick }/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment