diff --git a/src/modules/backup/screens/Backup.tsx b/src/modules/backup/screens/Backup.tsx index d21c767d..7893a767 100644 --- a/src/modules/backup/screens/Backup.tsx +++ b/src/modules/backup/screens/Backup.tsx @@ -236,7 +236,7 @@ export function Backup() { return ( refetch().catch(defaultPromiseErrorHandler('Backup::refetch'))} /> ); diff --git a/src/modules/browse/screens/BrowseSettings.tsx b/src/modules/browse/screens/BrowseSettings.tsx index 98d7c6e2..21a9b974 100644 --- a/src/modules/browse/screens/BrowseSettings.tsx +++ b/src/modules/browse/screens/BrowseSettings.tsx @@ -78,7 +78,7 @@ export const BrowseSettings = () => { return ( refetch().catch(defaultPromiseErrorHandler('BrowseSettings::refetch'))} /> ); diff --git a/src/modules/category/screens/CategorySettings.tsx b/src/modules/category/screens/CategorySettings.tsx index 32e94716..5b4d5b05 100644 --- a/src/modules/category/screens/CategorySettings.tsx +++ b/src/modules/category/screens/CategorySettings.tsx @@ -32,6 +32,7 @@ import { GetCategoriesSettingsQuery, GetCategoriesSettingsQueryVariables } from import { GET_CATEGORIES_SETTINGS } from '@/lib/graphql/queries/CategoryQuery.ts'; import { CategorySettingsCard } from '@/modules/category/components/CategorySettingsCard.tsx'; import { CategoryIdInfo } from '@/modules/category/Category.types.ts'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export function CategorySettings() { const { t } = useTranslation(); @@ -124,7 +125,7 @@ export function CategorySettings() { return ( refetch().catch(defaultPromiseErrorHandler('CategorySettings::refetch'))} /> ); diff --git a/src/modules/core/components/ErrorBoundary.tsx b/src/modules/core/components/ErrorBoundary.tsx index a1f18e65..f5fa23c9 100644 --- a/src/modules/core/components/ErrorBoundary.tsx +++ b/src/modules/core/components/ErrorBoundary.tsx @@ -8,6 +8,7 @@ import { Component, ErrorInfo, ReactNode, useEffect, useRef, useState } from 'react'; import { useLocation } from 'react-router-dom'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; interface Props { children?: ReactNode; @@ -55,7 +56,7 @@ class RealErrorBoundary extends Component { return ( <>

Something went wrong.

-

{error.message ?? JSON.stringify(error)}

+

{getErrorMessage(error)}

); } diff --git a/src/modules/device/screens/DeviceSetting.tsx b/src/modules/device/screens/DeviceSetting.tsx index 1cf83b5f..4ba127f6 100644 --- a/src/modules/device/screens/DeviceSetting.tsx +++ b/src/modules/device/screens/DeviceSetting.tsx @@ -77,7 +77,7 @@ export const DeviceSetting = () => { return ( refetch().catch(defaultPromiseErrorHandler('DeviceSetting::refetch'))} /> ); diff --git a/src/modules/downloads/screens/DownloadQueue.tsx b/src/modules/downloads/screens/DownloadQueue.tsx index 2df6bb63..941b7772 100644 --- a/src/modules/downloads/screens/DownloadQueue.tsx +++ b/src/modules/downloads/screens/DownloadQueue.tsx @@ -256,7 +256,7 @@ export const DownloadQueue: React.FC = () => { return ( refetch().catch(defaultPromiseErrorHandler('DownloadQueue::refetch'))} /> ); diff --git a/src/modules/downloads/screens/DownloadSettings.tsx b/src/modules/downloads/screens/DownloadSettings.tsx index e9269f90..a0c5b4bf 100644 --- a/src/modules/downloads/screens/DownloadSettings.tsx +++ b/src/modules/downloads/screens/DownloadSettings.tsx @@ -88,7 +88,7 @@ export const DownloadSettings = () => { return ( { if (serverSettings.error) { serverSettings diff --git a/src/modules/extension/screens/Extensions.tsx b/src/modules/extension/screens/Extensions.tsx index 88103edc..9ce656a3 100644 --- a/src/modules/extension/screens/Extensions.tsx +++ b/src/modules/extension/screens/Extensions.tsx @@ -197,7 +197,7 @@ export function Extensions({ tabsMenuHeight }: { tabsMenuHeight: number }) { return ( { if (serverSettingsError) { refetchServerSettings().catch(defaultPromiseErrorHandler('Extensions::refetchServerSettings')); diff --git a/src/modules/global-search/screens/SearchAll.tsx b/src/modules/global-search/screens/SearchAll.tsx index 0e8ffe30..2ef2cec0 100644 --- a/src/modules/global-search/screens/SearchAll.tsx +++ b/src/modules/global-search/screens/SearchAll.tsx @@ -30,6 +30,7 @@ import { BaseMangaGrid } from '@/modules/manga/components/BaseMangaGrid.tsx'; import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts'; import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; type SourceLoadingState = { isLoading: boolean; hasResults: boolean; emptySearch: boolean }; type SourceToLoadingStateMap = Map; @@ -164,7 +165,7 @@ const SourceSearchPreview = React.memo( sx={{ alignItems: 'start', height: undefined }} noFaces message={errorMessage} - messageExtra={error && error.message} + messageExtra={getErrorMessage(error)} retry={ error ? () => @@ -278,7 +279,7 @@ export const SearchAll: React.FC = () => { return ( refetch().catch(defaultPromiseErrorHandler('SearchAll::refetch'))} /> ); diff --git a/src/modules/library/screens/LibraryDuplicates.tsx b/src/modules/library/screens/LibraryDuplicates.tsx index 708d357d..70677df1 100644 --- a/src/modules/library/screens/LibraryDuplicates.tsx +++ b/src/modules/library/screens/LibraryDuplicates.tsx @@ -34,6 +34,7 @@ import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/Style import { VirtuosoUtil } from '@/lib/virtuoso/Virtuoso.util.tsx'; import { LibraryDuplicatesWorkerInput, TMangaDuplicate, TMangaDuplicates } from '@/modules/library/Library.types.ts'; import { GridLayout } from '@/modules/core/Core.types.ts'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const LibraryDuplicates = () => { const { t } = useTranslation(); @@ -139,7 +140,7 @@ export const LibraryDuplicates = () => { return ( refetch().catch(defaultPromiseErrorHandler('LibraryDuplicates::refetch'))} /> ); diff --git a/src/modules/library/screens/LibrarySettings.tsx b/src/modules/library/screens/LibrarySettings.tsx index 873e6143..de8700fd 100644 --- a/src/modules/library/screens/LibrarySettings.tsx +++ b/src/modules/library/screens/LibrarySettings.tsx @@ -100,7 +100,7 @@ export function LibrarySettings() { return ( { if (serverSettings.error) { serverSettings diff --git a/src/modules/manga/hooks/useManageMangaLibraryState.tsx b/src/modules/manga/hooks/useManageMangaLibraryState.tsx index 4a520b06..8a930e3d 100644 --- a/src/modules/manga/hooks/useManageMangaLibraryState.tsx +++ b/src/modules/manga/hooks/useManageMangaLibraryState.tsx @@ -112,11 +112,11 @@ export const useManageMangaLibraryState = ( | undefined; try { duplicatedLibraryMangas = await Mangas.getDuplicateLibraryMangas(manga.title).response; - } catch (e: any) { + } catch (e) { await awaitConfirmation({ title: t('global.error.label.failed_to_load_data'), message: t('manga.action.library.add.dialog.duplicate.label.failure', { - error: e.message, + error: getErrorMessage(e), }), actions: { extra: { show: true, title: t('global.button.retry'), contain: true }, diff --git a/src/modules/manga/screens/Manga.tsx b/src/modules/manga/screens/Manga.tsx index a3c55b64..f80e11de 100644 --- a/src/modules/manga/screens/Manga.tsx +++ b/src/modules/manga/screens/Manga.tsx @@ -26,6 +26,7 @@ import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { GetMangaScreenQuery } from '@/lib/graphql/generated/graphql.ts'; import { GET_MANGA_SCREEN } from '@/lib/graphql/queries/MangaQuery.ts'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const Manga: React.FC = () => { const { t } = useTranslation(); @@ -82,7 +83,7 @@ export const Manga: React.FC = () => { <> {t('manga.error.label.request_failure')}
- {error.message ?? error} + {getErrorMessage(error)} } > @@ -107,7 +108,10 @@ export const Manga: React.FC = () => { if (error && !manga) { return ( - + ); } return ( diff --git a/src/modules/migration/screens/Migrate.tsx b/src/modules/migration/screens/Migrate.tsx index c4ba766b..1178f732 100644 --- a/src/modules/migration/screens/Migrate.tsx +++ b/src/modules/migration/screens/Migrate.tsx @@ -22,6 +22,7 @@ import { GET_SOURCE_MIGRATABLE } from '@/lib/graphql/queries/SourceQuery.ts'; import { SOURCE_BASE_FIELDS } from '@/lib/graphql/fragments/SourceFragments.ts'; import { BaseMangaGrid } from '@/modules/manga/components/BaseMangaGrid.tsx'; import { GridLayout } from '@/modules/core/Core.types.ts'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const Migrate = () => { const { t } = useTranslation(); @@ -101,7 +102,7 @@ export const Migrate = () => { return ( { if (hasErrorSource) { refetchSource().catch(defaultPromiseErrorHandler('Migrate::refetchSource')); diff --git a/src/modules/migration/screens/Migration.tsx b/src/modules/migration/screens/Migration.tsx index 61491692..e4151057 100644 --- a/src/modules/migration/screens/Migration.tsx +++ b/src/modules/migration/screens/Migration.tsx @@ -102,7 +102,7 @@ export const Migration = ({ tabsMenuHeight }: { tabsMenuHeight: number }) => { return ( refetch().catch(defaultPromiseErrorHandler('Migration::refetch'))} /> ); diff --git a/src/modules/reader/screens/GlobalReaderSettings.tsx b/src/modules/reader/screens/GlobalReaderSettings.tsx index 4b7e64e1..4b3b4e3d 100644 --- a/src/modules/reader/screens/GlobalReaderSettings.tsx +++ b/src/modules/reader/screens/GlobalReaderSettings.tsx @@ -16,6 +16,7 @@ import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContex import { IReaderSettings, ReadingMode } from '@/modules/reader/types/Reader.types.ts'; import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; import { ReaderSettingsTabs } from '@/modules/reader/components/settings/ReaderSettingsTabs.tsx'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const GlobalReaderSettings = () => { const { t } = useTranslation(); @@ -55,7 +56,7 @@ export const GlobalReaderSettings = () => { return ( refetch().catch(defaultPromiseErrorHandler('DefaultReaderSettings::refetch'))} /> ); diff --git a/src/modules/reader/screens/Reader.tsx b/src/modules/reader/screens/Reader.tsx index afef3333..a7212ede 100644 --- a/src/modules/reader/screens/Reader.tsx +++ b/src/modules/reader/screens/Reader.tsx @@ -40,6 +40,7 @@ import { createPageData, createPagesData } from '@/modules/reader/utils/ReaderPa import { ReaderHotkeys } from '@/modules/reader/components/ReaderHotkeys.tsx'; import { ReaderResumeMode, ReaderTransitionPageMode } from '@/modules/reader/types/Reader.types.ts'; import { getInitialReaderPageIndex } from '@/modules/reader/utils/Reader.utils.ts'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const Reader = () => { const { t } = useTranslation(); @@ -284,7 +285,7 @@ export const Reader = () => { return ( { if (mangaResponse.error) { mangaResponse.refetch().catch(defaultPromiseErrorHandler('Reader::refetchManga')); diff --git a/src/modules/settings/screens/About.tsx b/src/modules/settings/screens/About.tsx index 418bad1f..57fd41a0 100644 --- a/src/modules/settings/screens/About.tsx +++ b/src/modules/settings/screens/About.tsx @@ -22,6 +22,7 @@ import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts' import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { getBuildTime, getVersion } from '@/modules/app-updates/services/AppUpdateChecker.tsx'; import { VersionInfo } from '@/modules/app-updates/components/VersionInfo.tsx'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export function About() { const { t } = useTranslation(); @@ -67,7 +68,7 @@ export function About() { return ( refetch().catch(defaultPromiseErrorHandler('About::refetch'))} /> ); diff --git a/src/modules/settings/screens/Appearance.tsx b/src/modules/settings/screens/Appearance.tsx index 080540b4..fe4c1e66 100644 --- a/src/modules/settings/screens/Appearance.tsx +++ b/src/modules/settings/screens/Appearance.tsx @@ -73,7 +73,7 @@ export const Appearance = () => { return ( refetch().catch(defaultPromiseErrorHandler('Appearance::refetch'))} /> ); diff --git a/src/modules/settings/screens/ServerSettings.tsx b/src/modules/settings/screens/ServerSettings.tsx index 2611f43d..2bb2f402 100644 --- a/src/modules/settings/screens/ServerSettings.tsx +++ b/src/modules/settings/screens/ServerSettings.tsx @@ -190,7 +190,7 @@ export const ServerSettings = () => { {localSettings} { if (metadataServerSettingsError) { refetchServerMetadataSettings().catch( diff --git a/src/modules/settings/screens/WebUISettings.tsx b/src/modules/settings/screens/WebUISettings.tsx index d9ca3851..ae9d91d4 100644 --- a/src/modules/settings/screens/WebUISettings.tsx +++ b/src/modules/settings/screens/WebUISettings.tsx @@ -174,7 +174,7 @@ export const WebUISettings = () => { return ( { if (metadataServerSettingsError) { refetchServerMetadataSettings().catch( diff --git a/src/modules/source/screens/SourceConfigure.tsx b/src/modules/source/screens/SourceConfigure.tsx index 20f88207..9aa5e070 100644 --- a/src/modules/source/screens/SourceConfigure.tsx +++ b/src/modules/source/screens/SourceConfigure.tsx @@ -87,7 +87,7 @@ export function SourceConfigure() { return ( refetch().catch(defaultPromiseErrorHandler('SourceConfigure::refetch'))} /> ); diff --git a/src/modules/source/screens/Sources.tsx b/src/modules/source/screens/Sources.tsx index 79fd0483..41da7dd0 100644 --- a/src/modules/source/screens/Sources.tsx +++ b/src/modules/source/screens/Sources.tsx @@ -30,6 +30,7 @@ import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts' import { SourceType } from '@/lib/graphql/generated/graphql.ts'; import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts'; import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; function sourceToLangList(sources: Pick[]) { const result = new Set(); @@ -136,7 +137,7 @@ export function Sources({ tabsMenuHeight }: { tabsMenuHeight: number }) { return ( refetch().catch(defaultPromiseErrorHandler('Sources::refetch'))} /> ); diff --git a/src/modules/theme/components/CreateThemeDialog.tsx b/src/modules/theme/components/CreateThemeDialog.tsx index 0e471bbd..8e8e6751 100644 --- a/src/modules/theme/components/CreateThemeDialog.tsx +++ b/src/modules/theme/components/CreateThemeDialog.tsx @@ -110,7 +110,7 @@ export const ThemeCreationDialog = ({ {error && ( refetch().catch(defaultPromiseErrorHandler('ThemeCreationDialog::refetch'))} /> )} diff --git a/src/modules/theme/components/ThemeList.tsx b/src/modules/theme/components/ThemeList.tsx index 2122e3e5..9c46cb98 100644 --- a/src/modules/theme/components/ThemeList.tsx +++ b/src/modules/theme/components/ThemeList.tsx @@ -54,7 +54,7 @@ export const ThemeList = () => { return ( refetch().catch(defaultPromiseErrorHandler('ThemeList::refetch'))} /> ); diff --git a/src/modules/tracker/components/TrackManga.tsx b/src/modules/tracker/components/TrackManga.tsx index 560b42f7..6cdb0fc3 100644 --- a/src/modules/tracker/components/TrackManga.tsx +++ b/src/modules/tracker/components/TrackManga.tsx @@ -111,7 +111,7 @@ export const TrackManga = ({ manga }: { manga: MangaIdInfo & Pick { if (trackerList.error) { trackerList.refetch().catch(defaultPromiseErrorHandler('TrackManga::refetch: trackerList')); diff --git a/src/modules/tracker/components/TrackerSearch.tsx b/src/modules/tracker/components/TrackerSearch.tsx index 733da280..bac508c2 100644 --- a/src/modules/tracker/components/TrackerSearch.tsx +++ b/src/modules/tracker/components/TrackerSearch.tsx @@ -155,7 +155,7 @@ export const TrackerSearch = ({ {trackerSearch.error && !trackerSearch.loading && ( trackerSearch.refetch().catch(defaultPromiseErrorHandler('TrackerSearch::refetch')) } diff --git a/src/modules/tracker/screens/TrackingSettings.tsx b/src/modules/tracker/screens/TrackingSettings.tsx index f9ee8779..44059263 100644 --- a/src/modules/tracker/screens/TrackingSettings.tsx +++ b/src/modules/tracker/screens/TrackingSettings.tsx @@ -64,7 +64,7 @@ export const TrackingSettings = () => { return ( { if (metadataServerSettingsError) { refetchServerMetadataSettings().catch( diff --git a/src/modules/updates/screens/Updates.tsx b/src/modules/updates/screens/Updates.tsx index 83a76c58..0864364b 100644 --- a/src/modules/updates/screens/Updates.tsx +++ b/src/modules/updates/screens/Updates.tsx @@ -140,7 +140,7 @@ export const Updates: React.FC = () => { return ( refetch().catch(defaultPromiseErrorHandler('Updates::refetch'))} /> );