Skip to content

Commit

Permalink
Refactor not found error
Browse files Browse the repository at this point in the history
  • Loading branch information
selankon committed Aug 9, 2024
1 parent 66050af commit b3d3606
Show file tree
Hide file tree
Showing 10 changed files with 80 additions and 85 deletions.
12 changes: 7 additions & 5 deletions src/components/Blocks/BlocksList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@ import { generatePath, useNavigate } from 'react-router-dom'
import { BlockCard } from '~components/Blocks/BlockCard'
import { PopoverInputSearch } from '~components/Layout/Inputs'
import { LoadingCards } from '~components/Layout/Loading'
import LoadingError from '~components/Layout/LoadingError'
import { ContentError, NoResultsError } from '~components/Layout/ContentError'
import { RoutedPaginationProvider, useRoutedPagination } from '~components/Pagination/PaginationProvider'
import { RoutedPagination } from '~components/Pagination/RoutedPagination'
import { PaginationItemsPerPage, RefreshIntervalBlocks, RoutePath } from '~constants'
import { useBlockList } from '~queries/blocks'
import { useChainInfo } from '~queries/stats'
import { retryUnlessNotFound } from '~utils/queries'

export const BlocksFilter = () => {
const { t } = useTranslation()
Expand Down Expand Up @@ -76,7 +75,6 @@ export const BlocksList = () => {
},
enabled: !!stats?.height,
placeholderData: keepPreviousData,
retry: retryUnlessNotFound,
})

const isLoading = isLoadingStats || isLoadingBlocks
Expand All @@ -87,8 +85,12 @@ export const BlocksList = () => {

const blocks = blocksResponse?.blocks

if (!blocks || blocks?.length === 0 || isError) {
return <LoadingError error={error} />
if (blocksResponse?.pagination.totalItems === 0) {
return <NoResultsError />
}

if (isError || !blocks) {
return <ContentError error={error} />
}

return (
Expand Down
19 changes: 19 additions & 0 deletions src/components/Layout/ContentError.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Alert, AlertIcon, Code, Stack, Text } from '@chakra-ui/react'
import { Trans, useTranslation } from 'react-i18next'

export const NoResultsError = ({ msg }: { msg?: string }) => {
const { t } = useTranslation()
return <Text>{msg ?? t('errors.no_results', { defaultValue: 'Looks like there are no results to show.' })}</Text>
}

export const ContentError = ({ error }: { error: Error | undefined | null | string }) => {
return (
<Stack spacing={4}>
<Alert status='warning'>
<AlertIcon />
<Trans i18nKey={'errors.content_error'}>Looks like the content you were accessing threw an error.</Trans>
</Alert>
{error && <Code>{typeof error === 'string' ? error : error.message}</Code>}
</Stack>
)
}
16 changes: 0 additions & 16 deletions src/components/Layout/LoadingError.tsx

This file was deleted.

12 changes: 7 additions & 5 deletions src/components/Organizations/Details/Elections.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import { RoutedPaginationProvider, useRoutedPagination } from '~components/Pagin
import { ElectionCard } from '~components/Process/Card'
import { RoutePath } from '~constants'
import { useOrganizationElections } from '~queries/organizations'
import { retryUnlessNotFound } from '~utils/queries'
import LoadingError from '~components/Layout/LoadingError'
import { ContentError, NoResultsError } from '~components/Layout/ContentError'

interface OrgComponentProps {
org: AccountData
Expand Down Expand Up @@ -38,16 +37,19 @@ const OrganizationElectionsList = ({ org }: OrgComponentProps) => {
page: page,
options: {
enabled: !!org.address,
retry: retryUnlessNotFound,
},
})

if (isLoading) {
return <LoadingCards />
}

if (!data || data?.elections.length === 0 || isError) {
return <LoadingError error={error} />
if (data?.pagination.totalItems === 0) {
return <NoResultsError />
}

if (isError || !data) {
return <ContentError error={error} />
}

return (
Expand Down
12 changes: 6 additions & 6 deletions src/components/Organizations/Details/Fees.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@ import { AccountData, TransactionType } from '@vocdoni/sdk'
import { PaginationProvider, usePagination } from '~components/Pagination/PaginationProvider'
import { Pagination } from '~components/Pagination/Pagination'
import { useAccountFees } from '~queries/organizations'
import { retryUnlessNotFound } from '~utils/queries'
import LoadingError from '~components/Layout/LoadingError'
import { TransactionTypeBadge } from '~components/Transactions/TransactionCard'
import { generatePath, Link as RouterLink } from 'react-router-dom'
import { RoutePath } from '~constants'
import { ContentError, NoResultsError } from '~components/Layout/ContentError'

const AccountFees = (org: { org: AccountData }) => {
return (
Expand All @@ -29,17 +28,18 @@ const AccountFeesTable = ({ org }: { org: AccountData }) => {
accountId: org.address,
page,
},
options: {
retry: retryUnlessNotFound,
},
})

if (isLoading) {
return <LoadingCards />
}

if (data?.pagination.totalItems === 0) {
return <NoResultsError />
}

if (isError || !data) {
return <LoadingError error={error} />
return <ContentError error={error} />
}

if (!data.fees.length) {
Expand Down
10 changes: 6 additions & 4 deletions src/components/Organizations/Details/Transfers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,11 @@ import { ReducedTextAndCopy } from '~components/Layout/CopyButton'
import { LoadingCards } from '~components/Layout/Loading'
import { RoutePath } from '~constants'
import { useAccountTransfers } from '~queries/organizations'
import { retryUnlessNotFound } from '~utils/queries'
import { useDateFns } from '~i18n/use-date-fns'
import { BiLogInCircle, BiLogOutCircle } from 'react-icons/bi'
import { AccountData } from '@vocdoni/sdk'
import { PaginationProvider, usePagination } from '~components/Pagination/PaginationProvider'
import LoadingError from '~components/Layout/LoadingError'
import { ContentError, NoResultsError } from '~components/Layout/ContentError'
import { Pagination } from '~components/Pagination/Pagination'

const FromToIcon = ({ isIncoming, ...rest }: { isIncoming: boolean } & IconProps) => {
Expand Down Expand Up @@ -71,7 +70,6 @@ const AccountTransfersTable = ({ txCount, org }: AccountTransfersProps) => {
page: page,
options: {
enabled: !!txCount && txCount > 0,
retry: retryUnlessNotFound,
},
})

Expand All @@ -87,8 +85,12 @@ const AccountTransfersTable = ({ txCount, org }: AccountTransfersProps) => {
return <LoadingCards />
}

if (data?.pagination.totalItems === 0) {
return <NoResultsError />
}

if (isError || !data) {
return <LoadingError error={error} />
return <ContentError error={error} />
}

return (
Expand Down
12 changes: 7 additions & 5 deletions src/components/Organizations/List.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ import { useTranslation } from 'react-i18next'
import { generatePath, useNavigate, useParams } from 'react-router-dom'
import { InputSearch } from '~components/Layout/Inputs'
import { LoadingCards } from '~components/Layout/Loading'
import LoadingError from '~components/Layout/LoadingError'
import { OrganizationCard } from '~components/Organizations/Card'
import { RoutedPaginationProvider, useRoutedPagination } from '~components/Pagination/PaginationProvider'
import { RoutedPagination } from '~components/Pagination/RoutedPagination'
import { RoutePath } from '~constants'
import { useOrganizationCount, useOrganizationList } from '~queries/organizations'
import { retryUnlessNotFound } from '~utils/queries'
import { ContentError, NoResultsError } from '~components/Layout/ContentError'

export const OrganizationsFilter = () => {
const { t } = useTranslation()
Expand Down Expand Up @@ -54,7 +53,6 @@ export const OrganizationsList = () => {
organizationId: query,
},
placeholderData: keepPreviousData,
retry: retryUnlessNotFound,
})

const isLoading = isLoadingCount || isLoadingOrgs
Expand All @@ -63,8 +61,12 @@ export const OrganizationsList = () => {
return <LoadingCards skeletonCircle />
}

if (!orgs || orgs?.organizations.length === 0 || isError) {
return <LoadingError error={error} />
if (orgs?.pagination.totalItems === 0) {
return <NoResultsError />
}

if (!orgs || isError) {
return <ContentError error={error} />
}

return (
Expand Down
16 changes: 7 additions & 9 deletions src/components/Process/ProcessList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,13 @@ import { FetchElectionsParameters } from '@vocdoni/sdk'
import { Trans, useTranslation } from 'react-i18next'
import { InputSearch } from '~components/Layout/Inputs'
import { LoadingCards } from '~components/Layout/Loading'
import LoadingError from '~components/Layout/LoadingError'
import { ContentError, NoResultsError } from '~components/Layout/ContentError'
import { RoutedPaginationProvider, useRoutedPagination } from '~components/Pagination/PaginationProvider'
import { RoutedPagination } from '~components/Pagination/RoutedPagination'
import { RoutePath } from '~constants'
import { useProcessList } from '~queries/processes'
import useQueryParams from '~src/router/use-query-params'
import { isEmpty } from '~utils/objects'
import { isNotFoundError, retryUnlessNotFound } from '~utils/queries'
import { ElectionCard } from './Card'
import { LuListFilter } from 'react-icons/lu'

Expand Down Expand Up @@ -151,19 +150,18 @@ const ProcessList = () => {
},
refetchOnWindowFocus: false,
placeholderData: keepPreviousData,
retry: retryUnlessNotFound,
})

if (isLoading || (isFetching && !isEmpty(processFilters))) {
return <LoadingCards spacing={4} pl={4} skeletonHeight={4} />
}

if (!data || data?.elections.length === 0 || isError) {
let _error: string | Error | null = error
if (isNotFoundError(error) && !isEmpty(processFilters)) {
_error = t('filters.filters_not_found', { defaultValue: 'No results found for this filters' })
}
return <LoadingError error={_error} />
if (data?.pagination.totalItems === 0) {
return <NoResultsError />
}

if (!data || isError) {
return <ContentError error={error} />
}

return (
Expand Down
39 changes: 21 additions & 18 deletions src/components/Transactions/TransactionList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@ import { Trans, useTranslation } from 'react-i18next'
import { generatePath, useNavigate } from 'react-router-dom'
import { PopoverInputSearch } from '~components/Layout/Inputs'
import { LoadingCards } from '~components/Layout/Loading'
import LoadingError from '~components/Layout/LoadingError'
import { RoutedPaginationProvider, useRoutedPagination } from '~components/Pagination/PaginationProvider'
import { RoutedPagination } from '~components/Pagination/RoutedPagination'
import { TransactionCard } from '~components/Transactions/TransactionCard'
import { PaginationItemsPerPage, RoutePath } from '~constants'
import { useBlockTransactions } from '~queries/blocks'
import { useTransactionList, useTransactionsCount } from '~queries/transactions'
import { retryUnlessNotFound } from '~utils/queries'
import { useCallback, useState } from 'react'
import { isValidHash } from '~utils/strings'
import { ContentError, NoResultsError } from '~components/Layout/ContentError'

export const TransactionFilter = () => {
const { t } = useTranslation()
Expand Down Expand Up @@ -73,7 +72,6 @@ const TransactionsList = () => {
page,
},
placeholderData: keepPreviousData,
retry: retryUnlessNotFound,
})

const isLoading = isLoadingCount || isLoadingTx
Expand Down Expand Up @@ -102,7 +100,6 @@ const TransactionsListByBlock = ({ blockHeight, totalTxs }: ITxListByBlock) => {
blockHeight,
page: currentPage,
placeholderData: keepPreviousData,
retry: retryUnlessNotFound,
enabled: totalTxs > 0,
})

Expand Down Expand Up @@ -132,22 +129,28 @@ const TransactionsListCards = ({
)
}

if (isLoading) {
return <LoadingCards spacing={4} />
}

if (data?.pagination.totalItems === 0) {
return <NoResultsError />
}

if (isError || !data) {
return <ContentError error={error} />
}

return (
<>
{isLoading && <LoadingCards spacing={4} />}
{!data || data?.transactions.length === 0 || (isError && <LoadingError error={error} />)}
{data && data.transactions.length > 0 && (
<>
{data.transactions.map((tx, i) => (
<TransactionCard
key={i}
{...tx}
blockHeight={height ?? tx.blockHeight} // If is IBlockTransactionsResponse the block height is not on tx info
/>
))}
<RoutedPagination pagination={data.pagination} />
</>
)}
{data.transactions.map((tx, i) => (
<TransactionCard
key={i}
{...tx}
blockHeight={height ?? tx.blockHeight} // If is IBlockTransactionsResponse the block height is not on tx info
/>
))}
<RoutedPagination pagination={data.pagination} />
</>
)
}
17 changes: 0 additions & 17 deletions src/utils/queries.ts

This file was deleted.

0 comments on commit b3d3606

Please sign in to comment.