@@ -35,6 +35,7 @@ import { MangaType } from '@/lib/graphql/generated/graphql.ts';
|
|||||||
|
|
||||||
import { MangaIdInfo } from '@/modules/manga/Manga.types.ts';
|
import { MangaIdInfo } from '@/modules/manga/Manga.types.ts';
|
||||||
import { getErrorMessage } from '@/lib/HelperFunctions.ts';
|
import { getErrorMessage } from '@/lib/HelperFunctions.ts';
|
||||||
|
import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts';
|
||||||
|
|
||||||
export const TrackerSearch = ({
|
export const TrackerSearch = ({
|
||||||
manga,
|
manga,
|
||||||
@@ -61,6 +62,8 @@ export const TrackerSearch = ({
|
|||||||
const searchResults = trackerSearch.data?.searchTracker.trackSearches ?? [];
|
const searchResults = trackerSearch.data?.searchTracker.trackSearches ?? [];
|
||||||
|
|
||||||
const hasResults = !!searchResults.length;
|
const hasResults = !!searchResults.length;
|
||||||
|
const hasNoResults = !trackerSearch.loading && !trackerSearch.error && !hasResults;
|
||||||
|
const hasError = !!trackerSearch.error && !trackerSearch.loading;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setSelectedTrackerRemoteId(trackedId);
|
setSelectedTrackerRemoteId(trackedId);
|
||||||
@@ -77,9 +80,7 @@ export const TrackerSearch = ({
|
|||||||
!!selectedTrackerRemoteId &&
|
!!selectedTrackerRemoteId &&
|
||||||
!!searchResults.find((searchResult) => searchResult.remoteId === selectedTrackerRemoteId),
|
!!searchResults.find((searchResult) => searchResult.remoteId === selectedTrackerRemoteId),
|
||||||
[selectedTrackerRemoteId, searchResults],
|
[selectedTrackerRemoteId, searchResults],
|
||||||
) &&
|
) && !hasError;
|
||||||
!trackerSearch.loading &&
|
|
||||||
!trackerSearch.error;
|
|
||||||
|
|
||||||
const trackManga = () => {
|
const trackManga = () => {
|
||||||
if (selectedTrackerRemoteId === undefined) {
|
if (selectedTrackerRemoteId === undefined) {
|
||||||
@@ -147,12 +148,17 @@ export const TrackerSearch = ({
|
|||||||
/>
|
/>
|
||||||
</Stack>
|
</Stack>
|
||||||
</DialogTitle>
|
</DialogTitle>
|
||||||
<DialogContent dividers sx={{ padding: DIALOG_PADDING, height: '100vh', position: 'relative' }}>
|
<DialogContent
|
||||||
{!trackerSearch.loading && !trackerSearch.error && !hasResults && (
|
dividers
|
||||||
<EmptyViewAbsoluteCentered message={t('manga.error.label.no_mangas_found')} />
|
sx={{
|
||||||
)}
|
padding: DIALOG_PADDING,
|
||||||
|
height: '100vh',
|
||||||
|
...applyStyles(hasNoResults || hasError, { position: 'relative' }),
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{hasNoResults && <EmptyViewAbsoluteCentered message={t('manga.error.label.no_mangas_found')} />}
|
||||||
{trackerSearch.loading && <LoadingPlaceholder />}
|
{trackerSearch.loading && <LoadingPlaceholder />}
|
||||||
{trackerSearch.error && !trackerSearch.loading && (
|
{hasError && (
|
||||||
<EmptyViewAbsoluteCentered
|
<EmptyViewAbsoluteCentered
|
||||||
message={t('global.error.label.failed_to_load_data')}
|
message={t('global.error.label.failed_to_load_data')}
|
||||||
messageExtra={getErrorMessage(trackerSearch.error)}
|
messageExtra={getErrorMessage(trackerSearch.error)}
|
||||||
|
|||||||
Reference in New Issue
Block a user