From 18fc225d6c2078efcdb4647d19089b95d27fc478 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 5 Oct 2024 19:21:26 +0200 Subject: [PATCH] Move manga files into new folder --- src/App.tsx | 2 +- src/components/MigrateDialog.tsx | 2 +- src/components/library/LibraryMangaGrid.tsx | 2 +- src/components/library/LibraryOptionsPanel.tsx | 2 +- .../library/useGetVisibleLibraryMangas.ts | 2 +- src/components/navbar/ReaderNavBar.tsx | 2 +- src/components/navbar/action/CategorySelect.tsx | 2 +- src/components/source/BaseMangaGrid.tsx | 2 +- src/components/tracker/TrackManga.tsx | 2 +- src/components/tracker/TrackerCard.tsx | 2 +- src/components/tracker/TrackerSearch.tsx | 2 +- src/lib/metadata/metadata.ts | 2 +- src/lib/metadata/readerSettings.ts | 2 +- src/lib/requests/requests/RequestManager.ts | 2 +- src/modules/chapter/components/ChapterList.tsx | 4 ++-- .../actions/ChaptersDownloadActionMenuItems.tsx | 2 +- src/modules/chapter/services/Chapters.ts | 2 +- .../manga/MangaCard.types.tsx | 9 ++++++--- .../manga/components}/ContinueReadingButton.tsx | 0 .../manga/components}/MangaActionMenuItems.tsx | 2 +- .../manga/components}/MangaBadges.tsx | 2 +- .../manga/components}/MangaDetails.tsx | 11 ++++++++--- src/{ => modules/manga}/components/MangaGrid.tsx | 4 ++-- .../manga/components}/MangaOptionButton.tsx | 0 .../manga/components}/MangaToolbarMenu.tsx | 0 .../manga/components}/ResumeFAB.tsx | 0 .../manga/components}/TrackMangaButton.tsx | 2 +- .../manga/components/cards}/MangaCard.tsx | 14 +++++++------- .../manga/components/cards}/MangaGridCard.tsx | 6 +++--- .../manga/components/cards}/MangaListCard.tsx | 6 +++--- .../manga/hooks}/useManageMangaLibraryState.tsx | 2 +- .../manga/hooks}/useRefreshManga.ts | 0 src/{ => modules/manga}/screens/Manga.tsx | 8 ++++---- src/{lib/data => modules/manga/services}/Mangas.ts | 0 src/screens/Library.tsx | 4 ++-- src/screens/Reader.tsx | 2 +- src/screens/SearchAll.tsx | 2 +- src/screens/SourceMangas.tsx | 4 ++-- src/screens/Updates.tsx | 2 +- src/screens/settings/LibraryDuplicates.tsx | 4 ++-- src/screens/settings/LibrarySettings.tsx | 2 +- src/typings.ts | 3 +-- 42 files changed, 66 insertions(+), 59 deletions(-) rename src/{components => modules}/manga/MangaCard.types.tsx (84%) rename src/{components/manga => modules/manga/components}/ContinueReadingButton.tsx (100%) rename src/{components/manga => modules/manga/components}/MangaActionMenuItems.tsx (99%) rename src/{components/manga => modules/manga/components}/MangaBadges.tsx (97%) rename src/{components/manga => modules/manga/components}/MangaDetails.tsx (97%) rename src/{ => modules/manga}/components/MangaGrid.tsx (98%) rename src/{components/manga => modules/manga/components}/MangaOptionButton.tsx (100%) rename src/{components/manga => modules/manga/components}/MangaToolbarMenu.tsx (100%) rename src/{components/manga => modules/manga/components}/ResumeFAB.tsx (100%) rename src/{components/manga => modules/manga/components}/TrackMangaButton.tsx (97%) rename src/{components => modules/manga/components/cards}/MangaCard.tsx (90%) rename src/{components/manga => modules/manga/components/cards}/MangaGridCard.tsx (97%) rename src/{components/manga => modules/manga/components/cards}/MangaListCard.tsx (95%) rename src/{components/manga => modules/manga/hooks}/useManageMangaLibraryState.tsx (99%) rename src/{components/manga => modules/manga/hooks}/useRefreshManga.ts (100%) rename src/{ => modules/manga}/screens/Manga.tsx (94%) rename src/{lib/data => modules/manga/services}/Mangas.ts (100%) diff --git a/src/App.tsx b/src/App.tsx index c95bd4ea..7e29d73e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -25,7 +25,7 @@ import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; const { Browse } = loadable(() => import('@/screens/Browse'), lazyLoadFallback); const { DownloadQueue } = loadable(() => import('@/screens/DownloadQueue'), lazyLoadFallback); const { Library } = loadable(() => import('@/screens/Library'), lazyLoadFallback); -const { Manga } = loadable(() => import('@/screens/Manga'), lazyLoadFallback); +const { Manga } = loadable(() => import('@/modules/manga/screens/Manga.tsx'), lazyLoadFallback); const { Reader } = loadable(() => import('@/screens/Reader'), lazyLoadFallback); const { SearchAll } = loadable(() => import('@/screens/SearchAll'), lazyLoadFallback); const { Settings } = loadable(() => import('@/screens/Settings'), lazyLoadFallback); diff --git a/src/components/MigrateDialog.tsx b/src/components/MigrateDialog.tsx index 17d18c60..99273778 100644 --- a/src/components/MigrateDialog.tsx +++ b/src/components/MigrateDialog.tsx @@ -17,7 +17,7 @@ import { Link, useNavigate, useParams } from 'react-router-dom'; import { useState } from 'react'; import FormGroup from '@mui/material/FormGroup'; import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; -import { Mangas, MigrateMode } from '@/lib/data/Mangas.ts'; +import { Mangas, MigrateMode } from '@/modules/manga/services/Mangas.ts'; import { makeToast } from '@/lib/ui/Toast.ts'; import { createUpdateMetadataServerSettings, diff --git a/src/components/library/LibraryMangaGrid.tsx b/src/components/library/LibraryMangaGrid.tsx index 57ff4177..0d842074 100644 --- a/src/components/library/LibraryMangaGrid.tsx +++ b/src/components/library/LibraryMangaGrid.tsx @@ -9,7 +9,7 @@ import React, { useLayoutEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { GridLayout, useLibraryOptionsContext } from '@/components/context/LibraryOptionsContext'; -import { IMangaGridProps, MangaGrid } from '@/components/MangaGrid'; +import { IMangaGridProps, MangaGrid } from '@/modules/manga/components/MangaGrid'; interface LibraryMangaGridProps extends Required>, diff --git a/src/components/library/LibraryOptionsPanel.tsx b/src/components/library/LibraryOptionsPanel.tsx index 6be3fe67..7b669759 100644 --- a/src/components/library/LibraryOptionsPanel.tsx +++ b/src/components/library/LibraryOptionsPanel.tsx @@ -21,7 +21,7 @@ import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { Trackers } from '@/lib/data/Trackers.ts'; import { GetTrackersSettingsQuery, MangaStatus } from '@/lib/graphql/generated/graphql.ts'; import { GET_TRACKERS_SETTINGS } from '@/lib/graphql/queries/TrackerQuery.ts'; -import { statusToTranslationKey } from '@/lib/data/Mangas.ts'; +import { statusToTranslationKey } from '@/modules/manga/services/Mangas.ts'; import { CategoryMetadataInfo } from '@/lib/data/Categories.ts'; import { createUpdateCategoryMetadata, getCategoryMetadata } from '@/lib/metadata/categoryMetadata.ts'; import { makeToast } from '@/lib/ui/Toast.ts'; diff --git a/src/components/library/useGetVisibleLibraryMangas.ts b/src/components/library/useGetVisibleLibraryMangas.ts index a582994a..8134cdd5 100644 --- a/src/components/library/useGetVisibleLibraryMangas.ts +++ b/src/components/library/useGetVisibleLibraryMangas.ts @@ -11,7 +11,7 @@ import { useMemo } from 'react'; import { LibraryOptions, LibrarySortMode } from '@/typings.ts'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { ChapterType, MangaType, SourceType, TrackRecordType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaChapterCountInfo, MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaChapterCountInfo, MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; import { enhancedCleanup } from '@/lib/data/Strings.ts'; import { CategoryMetadataInfo } from '@/lib/data/Categories.ts'; import { getCategoryMetadata } from '@/lib/metadata/categoryMetadata.ts'; diff --git a/src/components/navbar/ReaderNavBar.tsx b/src/components/navbar/ReaderNavBar.tsx index ef31cd08..9a80129c 100644 --- a/src/components/navbar/ReaderNavBar.tsx +++ b/src/components/navbar/ReaderNavBar.tsx @@ -33,7 +33,7 @@ import { useBackButton } from '@/modules/core/hooks/useBackButton.ts'; import { Select } from '@/modules/core/components/inputs/Select.tsx'; import { useGetOptionForDirection } from '@/theme.tsx'; import { ChapterType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaChapterCountInfo, MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaChapterCountInfo, MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { CustomIconButton } from '@/modules/core/components/buttons/CustomIconButton.tsx'; diff --git a/src/components/navbar/action/CategorySelect.tsx b/src/components/navbar/action/CategorySelect.tsx index 614aa19f..3ba801b6 100644 --- a/src/components/navbar/action/CategorySelect.tsx +++ b/src/components/navbar/action/CategorySelect.tsx @@ -17,7 +17,7 @@ import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; import Stack from '@mui/material/Stack'; import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; -import { Mangas } from '@/lib/data/Mangas.ts'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; import { useSelectableCollection } from '@/components/collection/useSelectableCollection.ts'; import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; import { Categories } from '@/lib/data/Categories.ts'; diff --git a/src/components/source/BaseMangaGrid.tsx b/src/components/source/BaseMangaGrid.tsx index 17d75c80..54fd39bf 100644 --- a/src/components/source/BaseMangaGrid.tsx +++ b/src/components/source/BaseMangaGrid.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { MangaGrid, IMangaGridProps } from '@/components/MangaGrid'; +import { MangaGrid, IMangaGridProps } from '@/modules/manga/components/MangaGrid.tsx'; type TMangaBaseGrid = Omit; diff --git a/src/components/tracker/TrackManga.tsx b/src/components/tracker/TrackManga.tsx index 4d98821b..6cbc1e79 100644 --- a/src/components/tracker/TrackManga.tsx +++ b/src/components/tracker/TrackManga.tsx @@ -20,7 +20,7 @@ import { makeToast } from '@/lib/ui/Toast.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetMangaTrackRecordsQuery, GetTrackersBindQuery, MangaType } from '@/lib/graphql/generated/graphql.ts'; import { GET_TRACKERS_BIND } from '@/lib/graphql/queries/TrackerQuery.ts'; -import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; import { GET_MANGA_TRACK_RECORDS } from '@/lib/graphql/queries/MangaQuery.ts'; const getTrackerMode = (id: number, trackersInUse: number[], searchModeForTracker?: number): TrackerMode => { diff --git a/src/components/tracker/TrackerCard.tsx b/src/components/tracker/TrackerCard.tsx index 2dc4d0d4..f9be8648 100644 --- a/src/components/tracker/TrackerCard.tsx +++ b/src/components/tracker/TrackerCard.tsx @@ -11,7 +11,7 @@ import { TrackerSearch } from '@/components/tracker/TrackerSearch.tsx'; import { TrackerActiveCard } from '@/components/tracker/TrackerActiveCard.tsx'; import { TTrackerBind, TTrackRecordBind } from '@/lib/data/Trackers.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; export enum TrackerMode { UNTRACKED, diff --git a/src/components/tracker/TrackerSearch.tsx b/src/components/tracker/TrackerSearch.tsx index 0ebb02df..f20a1b2e 100644 --- a/src/components/tracker/TrackerSearch.tsx +++ b/src/components/tracker/TrackerSearch.tsx @@ -32,7 +32,7 @@ import { DIALOG_PADDING } from '@/components/tracker/constants.ts'; import { useGetOptionForDirection } from '@/theme.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; export const TrackerSearch = ({ manga, diff --git a/src/lib/metadata/metadata.ts b/src/lib/metadata/metadata.ts index 1ac84aaa..1b2e487c 100644 --- a/src/lib/metadata/metadata.ts +++ b/src/lib/metadata/metadata.ts @@ -20,7 +20,7 @@ import { MetaType, SourceType } from '@/lib/graphql/generated/graphql.ts'; import { DEFAULT_DEVICE, getActiveDevice } from '@/util/device.ts'; import { CategoryIdInfo } from '@/lib/data/Categories.ts'; import { ChapterIdInfo } from '@/modules/chapter/services/Chapters.ts'; -import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; const APP_METADATA_KEY_PREFIX = 'webUI_'; diff --git a/src/lib/metadata/readerSettings.ts b/src/lib/metadata/readerSettings.ts index 1eb24431..a326885e 100644 --- a/src/lib/metadata/readerSettings.ts +++ b/src/lib/metadata/readerSettings.ts @@ -15,7 +15,7 @@ import { requestUpdateServerMetadata, } from '@/lib/metadata/metadata.ts'; import { MetaType } from '@/lib/graphql/generated/graphql.ts'; -import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; type UndefinedReaderSettings = { [setting in keyof IReaderSettings]: IReaderSettings[setting] | undefined; diff --git a/src/lib/requests/requests/RequestManager.ts b/src/lib/requests/requests/RequestManager.ts index aa47fa17..7fdc3e45 100644 --- a/src/lib/requests/requests/RequestManager.ts +++ b/src/lib/requests/requests/RequestManager.ts @@ -304,7 +304,7 @@ import { MetadataMigrationSettings } from '@/typings.ts'; import { DOWNLOAD_STATUS_FIELDS } from '@/lib/graphql/fragments/DownloadFragments.ts'; import { EXTENSION_LIST_FIELDS } from '@/lib/graphql/fragments/ExtensionFragments.ts'; import { MANGA_BASE_FIELDS, MANGA_META_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts'; -import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; import { GLOBAL_METADATA } from '@/lib/graphql/fragments/Fragments.ts'; import { CATEGORY_META_FIELDS } from '@/lib/graphql/fragments/CategoryFragments.ts'; import { SOURCE_META_FIELDS } from '@/lib/graphql/fragments/SourceFragments.ts'; diff --git a/src/modules/chapter/components/ChapterList.tsx b/src/modules/chapter/components/ChapterList.tsx index c0cca0c7..81fb72ea 100644 --- a/src/modules/chapter/components/ChapterList.tsx +++ b/src/modules/chapter/components/ChapterList.tsx @@ -21,7 +21,7 @@ import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; import Menu from '@mui/material/Menu'; import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { ChapterCard } from '@/modules/chapter/components/cards/ChapterCard.tsx'; -import { ResumeFab } from '@/components/manga/ResumeFAB.tsx'; +import { ResumeFab } from '@/modules/manga/components/ResumeFAB.tsx'; import { filterAndSortChapters } from '@/modules/chapter/utils/ChapterList.util.tsx'; import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { ChaptersToolbarMenu } from '@/modules/chapter/components/ChaptersToolbarMenu.tsx'; @@ -41,7 +41,7 @@ import { ChaptersDownloadActionMenuItems } from '@/modules/chapter/components/ac import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { GET_CHAPTERS_MANGA } from '@/lib/graphql/queries/ChapterQuery.ts'; -import { Mangas } from '@/lib/data/Mangas.ts'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; diff --git a/src/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx b/src/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx index d859a040..c54cac48 100644 --- a/src/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx +++ b/src/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx @@ -9,7 +9,7 @@ import MenuItem from '@mui/material/MenuItem'; import { useTranslation } from 'react-i18next'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; -import { Mangas } from '@/lib/data/Mangas.ts'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/modules/chapter/services/Chapters.ts b/src/modules/chapter/services/Chapters.ts index bf4d9b85..ea8cb1e4 100644 --- a/src/modules/chapter/services/Chapters.ts +++ b/src/modules/chapter/services/Chapters.ts @@ -18,7 +18,7 @@ import { DownloadStatusFieldsFragment, } from '@/lib/graphql/generated/graphql.ts'; import { CHAPTER_LIST_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; -import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; import { DirectionOffset, TranslationKey } from '@/Base.types.ts'; diff --git a/src/components/manga/MangaCard.types.tsx b/src/modules/manga/MangaCard.types.tsx similarity index 84% rename from src/components/manga/MangaCard.types.tsx rename to src/modules/manga/MangaCard.types.tsx index 01e03050..66de2e93 100644 --- a/src/components/manga/MangaCard.types.tsx +++ b/src/modules/manga/MangaCard.types.tsx @@ -10,10 +10,11 @@ import { LongPressPointerHandlers, LongPressResult } from 'use-long-press/lib/us import { PopupState } from 'material-ui-popup-state/hooks'; import { GridLayout } from '@/components/context/LibraryOptionsContext.tsx'; import { SelectableCollectionReturnType } from '@/components/collection/useSelectableCollection.ts'; -import { useManageMangaLibraryState } from '@/components/manga/useManageMangaLibraryState.tsx'; -import { MangaThumbnailInfo } from '@/lib/data/Mangas.ts'; +import { useManageMangaLibraryState } from '@/modules/manga/hooks/useManageMangaLibraryState.tsx'; +import { MangaThumbnailInfo } from '@/modules/manga/services/Mangas.ts'; import { ChapterType, MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { SingleModeProps } from '@/components/manga/MangaActionMenuItems.tsx'; +import { SingleModeProps } from '@/modules/manga/components/MangaActionMenuItems.tsx'; +import { IReaderSettings } from '@/typings'; export type MangaCardMode = 'default' | 'source' | 'migrate.search' | 'migrate.select' | 'duplicate'; @@ -44,3 +45,5 @@ export type SpecificMangaCardProps = Omit & continueReadingButton: JSX.Element; mangaBadges: JSX.Element; }; + +export type MangaMetadataKeys = keyof IReaderSettings; diff --git a/src/components/manga/ContinueReadingButton.tsx b/src/modules/manga/components/ContinueReadingButton.tsx similarity index 100% rename from src/components/manga/ContinueReadingButton.tsx rename to src/modules/manga/components/ContinueReadingButton.tsx diff --git a/src/components/manga/MangaActionMenuItems.tsx b/src/modules/manga/components/MangaActionMenuItems.tsx similarity index 99% rename from src/components/manga/MangaActionMenuItems.tsx rename to src/modules/manga/components/MangaActionMenuItems.tsx index 6705a9d6..72d984d2 100644 --- a/src/components/manga/MangaActionMenuItems.tsx +++ b/src/modules/manga/components/MangaActionMenuItems.tsx @@ -26,7 +26,7 @@ import { MangaIdInfo, Mangas, MangaUnreadInfo, -} from '@/lib/data/Mangas.ts'; +} from '@/modules/manga/services/Mangas.ts'; import { SelectableCollectionReturnType } from '@/components/collection/useSelectableCollection.ts'; import { MenuItem } from '@/modules/core/components/menu/MenuItem.tsx'; import { diff --git a/src/components/manga/MangaBadges.tsx b/src/modules/manga/components/MangaBadges.tsx similarity index 97% rename from src/components/manga/MangaBadges.tsx rename to src/modules/manga/components/MangaBadges.tsx index 3c570b82..17669ffc 100644 --- a/src/components/manga/MangaBadges.tsx +++ b/src/modules/manga/components/MangaBadges.tsx @@ -10,7 +10,7 @@ import { styled } from '@mui/material/styles'; import { useTranslation } from 'react-i18next'; import Button from '@mui/material/Button'; import Typography from '@mui/material/Typography'; -import { MangaCardMode } from '@/components/manga/MangaCard.types.tsx'; +import { MangaCardMode } from '@/modules/manga/MangaCard.types.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { useLibraryOptionsContext } from '@/components/context/LibraryOptionsContext.tsx'; diff --git a/src/components/manga/MangaDetails.tsx b/src/modules/manga/components/MangaDetails.tsx similarity index 97% rename from src/components/manga/MangaDetails.tsx rename to src/modules/manga/components/MangaDetails.tsx index cd4a5cf2..ab5adc9c 100644 --- a/src/components/manga/MangaDetails.tsx +++ b/src/modules/manga/components/MangaDetails.tsx @@ -27,11 +27,16 @@ import OpenInFullIcon from '@mui/icons-material/OpenInFull'; import Modal from '@mui/material/Modal'; import { bindPopover, bindTrigger, usePopupState } from 'material-ui-popup-state/hooks'; import { makeToast } from '@/lib/ui/Toast.ts'; -import { Mangas, MangaThumbnailInfo, MangaTrackRecordInfo, statusToTranslationKey } from '@/lib/data/Mangas.ts'; +import { + Mangas, + MangaThumbnailInfo, + MangaTrackRecordInfo, + statusToTranslationKey, +} from '@/modules/manga/services/Mangas.ts'; import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { CustomIconButton } from '@/modules/core/components/buttons/CustomIconButton.tsx'; -import { TrackMangaButton } from '@/components/manga/TrackMangaButton.tsx'; -import { useManageMangaLibraryState } from '@/components/manga/useManageMangaLibraryState.tsx'; +import { TrackMangaButton } from '@/modules/manga/components/TrackMangaButton.tsx'; +import { useManageMangaLibraryState } from '@/modules/manga/hooks/useManageMangaLibraryState.tsx'; import { Metadata as BaseMetadata } from '@/modules/core/components/Metadata.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { MangaType, SourceType } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/components/MangaGrid.tsx b/src/modules/manga/components/MangaGrid.tsx similarity index 98% rename from src/components/MangaGrid.tsx rename to src/modules/manga/components/MangaGrid.tsx index 8a478cd2..8e99b50d 100644 --- a/src/components/MangaGrid.tsx +++ b/src/modules/manga/components/MangaGrid.tsx @@ -23,13 +23,13 @@ import { useLocation } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; -import { MangaCard } from '@/components/MangaCard'; +import { MangaCard } from '@/modules/manga/components/cards/MangaCard.tsx'; import { GridLayout } from '@/components/context/LibraryOptionsContext'; import { useLocalStorage, useSessionStorage } from '@/modules/core/hooks/useStorage.tsx'; import { SelectableCollectionReturnType } from '@/components/collection/useSelectableCollection.ts'; import { DEFAULT_FULL_FAB_HEIGHT } from '@/modules/core/components/buttons/StyledFab.tsx'; import { AppStorage } from '@/lib/AppStorage.ts'; -import { MangaCardProps } from '@/components/manga/MangaCard.types.tsx'; +import { MangaCardProps } from '@/modules/manga/MangaCard.types.tsx'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; diff --git a/src/components/manga/MangaOptionButton.tsx b/src/modules/manga/components/MangaOptionButton.tsx similarity index 100% rename from src/components/manga/MangaOptionButton.tsx rename to src/modules/manga/components/MangaOptionButton.tsx diff --git a/src/components/manga/MangaToolbarMenu.tsx b/src/modules/manga/components/MangaToolbarMenu.tsx similarity index 100% rename from src/components/manga/MangaToolbarMenu.tsx rename to src/modules/manga/components/MangaToolbarMenu.tsx diff --git a/src/components/manga/ResumeFAB.tsx b/src/modules/manga/components/ResumeFAB.tsx similarity index 100% rename from src/components/manga/ResumeFAB.tsx rename to src/modules/manga/components/ResumeFAB.tsx diff --git a/src/components/manga/TrackMangaButton.tsx b/src/modules/manga/components/TrackMangaButton.tsx similarity index 97% rename from src/components/manga/TrackMangaButton.tsx rename to src/modules/manga/components/TrackMangaButton.tsx index 25967855..fd0155c5 100644 --- a/src/components/manga/TrackMangaButton.tsx +++ b/src/modules/manga/components/TrackMangaButton.tsx @@ -19,7 +19,7 @@ import { Trackers } from '@/lib/data/Trackers.ts'; import { CustomIconButton } from '@/modules/core/components/buttons/CustomIconButton.tsx'; import { GetTrackersSettingsQuery, MangaType } from '@/lib/graphql/generated/graphql.ts'; import { GET_TRACKERS_SETTINGS } from '@/lib/graphql/queries/TrackerQuery.ts'; -import { MangaTrackRecordInfo } from '@/lib/data/Mangas.ts'; +import { MangaTrackRecordInfo } from '@/modules/manga/services/Mangas.ts'; export const TrackMangaButton = ({ manga }: { manga: MangaTrackRecordInfo & Pick }) => { const { t } = useTranslation(); diff --git a/src/components/MangaCard.tsx b/src/modules/manga/components/cards/MangaCard.tsx similarity index 90% rename from src/components/MangaCard.tsx rename to src/modules/manga/components/cards/MangaCard.tsx index f920d499..76fa77ed 100644 --- a/src/components/MangaCard.tsx +++ b/src/modules/manga/components/cards/MangaCard.tsx @@ -10,15 +10,15 @@ import PopupState, { bindMenu } from 'material-ui-popup-state'; import { useMemo, useState } from 'react'; import { useLongPress } from 'use-long-press'; import { GridLayout, useLibraryOptionsContext } from '@/components/context/LibraryOptionsContext'; -import { MangaActionMenuItems, SingleModeProps } from '@/components/manga/MangaActionMenuItems.tsx'; +import { MangaActionMenuItems, SingleModeProps } from '@/modules/manga/components/MangaActionMenuItems.tsx'; import { Menu } from '@/modules/core/components/menu/Menu.tsx'; import { MigrateDialog } from '@/components/MigrateDialog.tsx'; -import { useManageMangaLibraryState } from '@/components/manga/useManageMangaLibraryState.tsx'; -import { MangaGridCard } from '@/components/manga/MangaGridCard.tsx'; -import { MangaListCard } from '@/components/manga/MangaListCard.tsx'; -import { MangaCardMode, MangaCardProps } from '@/components/manga/MangaCard.types'; -import { ContinueReadingButton } from '@/components/manga/ContinueReadingButton.tsx'; -import { MangaBadges } from '@/components/manga/MangaBadges.tsx'; +import { useManageMangaLibraryState } from '@/modules/manga/hooks/useManageMangaLibraryState.tsx'; +import { MangaGridCard } from '@/modules/manga/components/cards/MangaGridCard.tsx'; +import { MangaListCard } from '@/modules/manga/components/cards/MangaListCard.tsx'; +import { MangaCardMode, MangaCardProps } from '@/modules/manga/MangaCard.types.tsx'; +import { ContinueReadingButton } from '@/modules/manga/components/ContinueReadingButton.tsx'; +import { MangaBadges } from '@/modules/manga/components/MangaBadges.tsx'; const getMangaLinkTo = ( mode: MangaCardMode, diff --git a/src/components/manga/MangaGridCard.tsx b/src/modules/manga/components/cards/MangaGridCard.tsx similarity index 97% rename from src/components/manga/MangaGridCard.tsx rename to src/modules/manga/components/cards/MangaGridCard.tsx index bba87b59..99c2d1d8 100644 --- a/src/components/manga/MangaGridCard.tsx +++ b/src/modules/manga/components/cards/MangaGridCard.tsx @@ -16,10 +16,10 @@ import Tooltip from '@mui/material/Tooltip'; import { styled } from '@mui/material/styles'; import { useRef } from 'react'; import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; -import { MangaOptionButton } from '@/components/manga/MangaOptionButton.tsx'; +import { MangaOptionButton } from '@/modules/manga/components/MangaOptionButton.tsx'; import { GridLayout } from '@/components/context/LibraryOptionsContext.tsx'; -import { Mangas } from '@/lib/data/Mangas.ts'; -import { SpecificMangaCardProps } from '@/components/manga/MangaCard.types.tsx'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; +import { SpecificMangaCardProps } from '@/modules/manga/MangaCard.types.tsx'; import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; const BottomGradient = styled('div')({ diff --git a/src/components/manga/MangaListCard.tsx b/src/modules/manga/components/cards/MangaListCard.tsx similarity index 95% rename from src/components/manga/MangaListCard.tsx rename to src/modules/manga/components/cards/MangaListCard.tsx index 4c1dddcd..24577c1d 100644 --- a/src/components/manga/MangaListCard.tsx +++ b/src/modules/manga/components/cards/MangaListCard.tsx @@ -17,9 +17,9 @@ import { Link as RouterLink } from 'react-router-dom'; import { useRef } from 'react'; import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; -import { SpecificMangaCardProps } from '@/components/manga/MangaCard.types.tsx'; -import { Mangas } from '@/lib/data/Mangas.ts'; -import { MangaOptionButton } from '@/components/manga/MangaOptionButton.tsx'; +import { SpecificMangaCardProps } from '@/modules/manga/MangaCard.types.tsx'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; +import { MangaOptionButton } from '@/modules/manga/components/MangaOptionButton.tsx'; export const MangaListCard = ({ manga, diff --git a/src/components/manga/useManageMangaLibraryState.tsx b/src/modules/manga/hooks/useManageMangaLibraryState.tsx similarity index 99% rename from src/components/manga/useManageMangaLibraryState.tsx rename to src/modules/manga/hooks/useManageMangaLibraryState.tsx index 6d15ee2b..f00ece41 100644 --- a/src/components/manga/useManageMangaLibraryState.tsx +++ b/src/modules/manga/hooks/useManageMangaLibraryState.tsx @@ -16,7 +16,7 @@ import { makeToast } from '@/lib/ui/Toast.ts'; import { getMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { Categories } from '@/lib/data/Categories.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { Mangas } from '@/lib/data/Mangas.ts'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; import { awaitConfirmation } from '@/lib/ui/AwaitableDialog.tsx'; import { GetCategoriesBaseQuery, GetCategoriesBaseQueryVariables, MangaType } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_BASE } from '@/lib/graphql/queries/CategoryQuery.ts'; diff --git a/src/components/manga/useRefreshManga.ts b/src/modules/manga/hooks/useRefreshManga.ts similarity index 100% rename from src/components/manga/useRefreshManga.ts rename to src/modules/manga/hooks/useRefreshManga.ts diff --git a/src/screens/Manga.tsx b/src/modules/manga/screens/Manga.tsx similarity index 94% rename from src/screens/Manga.tsx rename to src/modules/manga/screens/Manga.tsx index 1bcbf620..a5601ee8 100644 --- a/src/screens/Manga.tsx +++ b/src/modules/manga/screens/Manga.tsx @@ -17,11 +17,11 @@ import { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; import { isNetworkRequestInFlight } from '@apollo/client/core/networkStatus'; import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; -import { NavBarContext } from '@/components/context/NavbarContext'; +import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { ChapterList } from '@/modules/chapter/components/ChapterList.tsx'; -import { useRefreshManga } from '@/components/manga/useRefreshManga.ts'; -import { MangaDetails } from '@/components/manga/MangaDetails'; -import { MangaToolbarMenu } from '@/components/manga/MangaToolbarMenu'; +import { useRefreshManga } from '@/modules/manga/hooks/useRefreshManga.ts'; +import { MangaDetails } from '@/modules/manga/components/MangaDetails.tsx'; +import { MangaToolbarMenu } from '@/modules/manga/components/MangaToolbarMenu.tsx'; import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { GetMangaScreenQuery } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/lib/data/Mangas.ts b/src/modules/manga/services/Mangas.ts similarity index 100% rename from src/lib/data/Mangas.ts rename to src/modules/manga/services/Mangas.ts diff --git a/src/screens/Library.tsx b/src/screens/Library.tsx index 90e88add..c0b29c22 100644 --- a/src/screens/Library.tsx +++ b/src/screens/Library.tsx @@ -25,7 +25,7 @@ import { useSelectableCollection } from '@/components/collection/useSelectableCo import { SelectableCollectionSelectMode } from '@/components/collection/SelectableCollectionSelectMode.tsx'; import { useGetVisibleLibraryMangas } from '@/components/library/useGetVisibleLibraryMangas.ts'; import { SelectionFAB } from '@/components/collection/SelectionFAB.tsx'; -import { MangaActionMenuItems } from '@/components/manga/MangaActionMenuItems.tsx'; +import { MangaActionMenuItems } from '@/modules/manga/components/MangaActionMenuItems.tsx'; import { TabsMenu } from '@/modules/core/components/tabs/TabsMenu.tsx'; import { TabsWrapper } from '@/modules/core/components/tabs/TabsWrapper.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; @@ -36,7 +36,7 @@ import { MangaType, } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_LIBRARY } from '@/lib/graphql/queries/CategoryQuery.ts'; -import { Mangas } from '@/lib/data/Mangas.ts'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; import { MANGA_CHAPTER_STAT_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts'; import { useLibraryOptionsContext } from '@/components/context/LibraryOptionsContext.tsx'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; diff --git a/src/screens/Reader.tsx b/src/screens/Reader.tsx index 873a2774..e7e387eb 100644 --- a/src/screens/Reader.tsx +++ b/src/screens/Reader.tsx @@ -40,7 +40,7 @@ import { ChapterIdInfo, Chapters } from '@/modules/chapter/services/Chapters.ts' import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { GET_CHAPTERS_READER } from '@/lib/graphql/queries/ChapterQuery.ts'; import { GET_MANGA_READER } from '@/lib/graphql/queries/MangaQuery.ts'; -import { TMangaReader } from '@/lib/data/Mangas.ts'; +import { TMangaReader } from '@/modules/manga/services/Mangas.ts'; import { CHAPTER_READER_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { DirectionOffset } from '@/Base.types.ts'; diff --git a/src/screens/SearchAll.tsx b/src/screens/SearchAll.tsx index f62fd10a..11b0d320 100644 --- a/src/screens/SearchAll.tsx +++ b/src/screens/SearchAll.tsx @@ -22,7 +22,7 @@ import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx'; import { LangSelect } from '@/modules/core/components/inputs/LangSelect.tsx'; import { useDebounce } from '@/modules/core/hooks/useDebounce.ts'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { MangaCardProps } from '@/components/manga/MangaCard.types.tsx'; +import { MangaCardProps } from '@/modules/manga/MangaCard.types.tsx'; import { EmptyView } from '@/modules/core/components/placeholder/EmptyView.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; diff --git a/src/screens/SourceMangas.tsx b/src/screens/SourceMangas.tsx index a270c177..387b7056 100644 --- a/src/screens/SourceMangas.tsx +++ b/src/screens/SourceMangas.tsx @@ -41,11 +41,11 @@ import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { useLocalStorage, useSessionStorage } from '@/modules/core/hooks/useStorage.tsx'; import { AppStorage } from '@/lib/AppStorage.ts'; -import { getGridSnapshotKey } from '@/components/MangaGrid.tsx'; +import { getGridSnapshotKey } from '@/modules/manga/components/MangaGrid.tsx'; import { createUpdateSourceMetadata, getSourceMetadata } from '@/lib/metadata/sourceMetadata.ts'; import { makeToast } from '@/lib/ui/Toast.ts'; import { GET_SOURCE_BROWSE } from '@/lib/graphql/queries/SourceQuery.ts'; -import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; import { TranslationKey } from '@/Base.types.ts'; const ContentTypeMenu = styled('div')(({ theme }) => ({ diff --git a/src/screens/Updates.tsx b/src/screens/Updates.tsx index 1449d7dd..cd4dc12d 100644 --- a/src/screens/Updates.tsx +++ b/src/screens/Updates.tsx @@ -29,7 +29,7 @@ import { UpdateChecker } from '@/modules/core/components/UpdateChecker.tsx'; import { StyledGroupedVirtuoso } from '@/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; import { StyledGroupHeader } from '@/modules/core/components/virtuoso/StyledGroupHeader.tsx'; import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; -import { Mangas } from '@/lib/data/Mangas.ts'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { dateTimeFormatter, epochToDate, getDateString } from '@/util/DateHelper.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; diff --git a/src/screens/settings/LibraryDuplicates.tsx b/src/screens/settings/LibraryDuplicates.tsx index 30699d59..9d036833 100644 --- a/src/screens/settings/LibraryDuplicates.tsx +++ b/src/screens/settings/LibraryDuplicates.tsx @@ -23,7 +23,7 @@ import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.ts import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; -import { MangaCard } from '@/components/MangaCard.tsx'; +import { MangaCard } from '@/modules/manga/components/cards/MangaCard.tsx'; import { StyledGroupedVirtuoso } from '@/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; import { StyledGroupHeader } from '@/modules/core/components/virtuoso/StyledGroupHeader.tsx'; import { @@ -33,7 +33,7 @@ import { } from '@/lib/graphql/generated/graphql.ts'; import { GET_MANGAS_DUPLICATES } from '@/lib/graphql/queries/MangaQuery.ts'; import { BaseMangaGrid } from '@/components/source/BaseMangaGrid.tsx'; -import { IMangaGridProps } from '@/components/MangaGrid.tsx'; +import { IMangaGridProps } from '@/modules/manga/components/MangaGrid.tsx'; import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; import { enhancedCleanup } from '@/lib/data/Strings.ts'; diff --git a/src/screens/settings/LibrarySettings.tsx b/src/screens/settings/LibrarySettings.tsx index a3b0afd3..2d5a6cda 100644 --- a/src/screens/settings/LibrarySettings.tsx +++ b/src/screens/settings/LibrarySettings.tsx @@ -24,7 +24,7 @@ import { useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; -import { Mangas } from '@/lib/data/Mangas.ts'; +import { Mangas } from '@/modules/manga/services/Mangas.ts'; import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; diff --git a/src/typings.ts b/src/typings.ts index 116eb447..20dd5448 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -22,6 +22,7 @@ import { import { AppTheme } from '@/lib/ui/AppThemes.ts'; import { SortSettings } from '@/screens/Migration.types.ts'; import { NullAndUndefined, TranslationKey } from '@/Base.types.ts'; +import { MangaMetadataKeys } from '@/modules/manga/MangaCard.types.tsx'; export interface IPos { type: 'selectState' | 'textState' | 'checkBoxState' | 'triState' | 'sortState'; @@ -68,8 +69,6 @@ export type AllowedMetadataValueTypes = string | boolean | number | undefined | export type MetadataServerSettingKeys = keyof MetadataServerSettings; -export type MangaMetadataKeys = keyof IReaderSettings; - export type SearchMetadataKeys = keyof ISearchSettings; export type SourceMetadataKeys = keyof ISourceMetadata;