From 23a86a77f09d04b041b984a74cf475fe8f73ea0a Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 5 Oct 2024 16:09:34 +0200 Subject: [PATCH] Move core files into new folder --- src/App.tsx | 8 +++--- src/Base.types.ts | 18 +++++++++++++ src/components/ExtensionCard.tsx | 10 +++---- src/components/MangaCard.tsx | 2 +- src/components/MangaGrid.tsx | 12 ++++----- src/components/MigrateDialog.tsx | 6 ++--- src/components/MigrationCard.tsx | 4 +-- src/components/SourceCard.tsx | 4 +-- .../chapter/ChapterActionMenuItems.tsx | 10 ++++--- src/components/chapter/ChapterCard.tsx | 8 +++--- src/components/chapter/ChapterList.tsx | 14 +++++----- src/components/chapter/ChapterOptions.tsx | 11 ++++---- .../ChaptersDownloadActionMenuItems.tsx | 2 +- src/components/chapter/util.tsx | 11 +++----- src/components/collection/SelectionFAB.tsx | 6 ++--- .../library/LibraryOptionsPanel.tsx | 17 ++++++------ .../library/LibraryOptionsProvider.tsx | 2 +- .../library/useGetVisibleLibraryMangas.ts | 3 ++- src/components/manga/MangaActionMenuItems.tsx | 12 ++++++--- src/components/manga/MangaDetails.tsx | 16 ++++++------ src/components/manga/MangaGridCard.tsx | 4 +-- src/components/manga/MangaListCard.tsx | 4 +-- src/components/manga/ResumeFAB.tsx | 2 +- src/components/manga/TrackMangaButton.tsx | 6 ++--- .../manga/useManageMangaLibraryState.tsx | 6 ++--- src/components/manga/useRefreshManga.ts | 2 +- src/components/navbar/DefaultNavBar.tsx | 4 +-- .../navbar/NavBarContextProvider.tsx | 4 +-- src/components/navbar/ReaderNavBar.tsx | 17 ++++++------ .../navbar/action/CategorySelect.tsx | 10 +++---- .../navbar/navigation/DesktopSideBar.tsx | 4 +-- .../navbar/navigation/MobileBottomBar.tsx | 2 +- src/components/reader/DoublePage.tsx | 2 +- src/components/reader/Page.tsx | 2 +- .../reader/ReaderSettingsOptions.tsx | 4 +-- .../reader/pager/HorizontalPager.tsx | 2 +- src/components/reader/pager/VerticalPager.tsx | 2 +- .../settings/CategoriesInclusionSetting.tsx | 8 +++--- src/components/settings/DeviceSetting.tsx | 12 ++++----- .../DeleteChaptersWhileReadingSetting.tsx | 2 +- .../downloads/DownloadAheadSetting.tsx | 6 ++--- .../globalUpdate/GlobalUpdateSettings.tsx | 4 +-- .../GlobalUpdateSettingsEntries.tsx | 11 ++++---- .../GlobalUpdateSettingsInterval.tsx | 6 ++--- .../webUI/WebUIUpdateIntervalSetting.tsx | 8 +++--- src/components/source/SourceGridLayout.tsx | 2 +- src/components/source/SourceOptions.tsx | 6 ++--- .../source/filters/CheckBoxFilter.tsx | 2 +- src/components/source/filters/SortFilter.tsx | 2 +- src/components/source/filters/TextFilter.tsx | 2 +- .../source/filters/TriStateFilter.tsx | 2 +- .../tracker/SettingsTrackerCard.tsx | 6 ++--- src/components/tracker/TrackManga.tsx | 10 +++---- src/components/tracker/TrackerActiveCard.tsx | 16 ++++++------ src/components/tracker/TrackerMangaCard.tsx | 6 ++--- src/components/tracker/TrackerSearch.tsx | 12 ++++----- .../tracker/TrackerUntrackedCard.tsx | 2 +- src/components/util/ServerUpdateChecker.tsx | 4 +-- src/components/util/WebUIUpdateChecker.tsx | 8 +++--- src/index.tsx | 2 +- src/{util => lib}/AppStorage.ts | 0 src/lib/{requests => }/CustomCache.ts | 0 .../DefaultPromiseErrorHandler.ts} | 0 src/{util => lib}/HelperFunctions.ts | 0 .../isoLanguages.ts => lib/IsoLanguages.ts} | 2 +- src/{util/language.tsx => lib/Languages.tsx} | 14 +++++----- src/lib/data/Chapters.ts | 19 +++++++------- src/lib/data/Mangas.ts | 7 ++--- src/lib/metadata/categoryMetadata.ts | 4 +-- src/lib/metadata/metadata.ts | 2 +- src/lib/metadata/metadataServerSettings.ts | 6 ++--- src/lib/metadata/readerSettings.ts | 2 +- src/lib/metadata/sourceMetadata.ts | 4 +-- .../ReactRouterDom.types.d.ts | 17 ++++++++++++ src/lib/requests/client/BaseClient.ts | 2 +- .../requests/{ => requests}/RequestManager.ts | 6 ++--- src/lib/ui/AppThemes.ts | 2 +- src/lib/ui/AwaitableDialog.tsx | 2 +- src/lib/ui/MediaQuery.tsx | 4 +-- .../util/Toast.tsx => lib/ui/Toast.ts} | 0 .../core/components}/AppbarSearch.tsx | 2 +- .../core/components}/ConfirmDialog.tsx | 0 .../CustomExtensionOutlinedIcon.tsx | 0 .../components}/DownloadStateIndicator.tsx | 2 +- .../core/components}/ErrorBoundary.tsx | 0 .../core/components}/ListItemLink.tsx | 0 .../core/components}/Metadata.tsx | 0 .../core/components}/OptionsPanel.tsx | 0 .../core/components}/OptionsTabs.tsx | 4 +-- .../core/components}/Progress.tsx | 0 .../core/components}/SpinnerImage.tsx | 2 +- .../core/components}/StrictModeDroppable.tsx | 0 .../core/components}/TypographyMaxLines.tsx | 2 +- .../core/components}/UpdateChecker.tsx | 10 +++---- .../components/buttons}/CustomIconButton.tsx | 0 .../core/components/buttons}/StyledFab.tsx | 0 .../components/inputs}/CheckboxContainer.ts | 0 .../core/components/inputs}/CheckboxInput.tsx | 0 .../core/components/inputs}/LangSelect.tsx | 4 +-- .../components/inputs}/PasswordTextField.tsx | 0 .../core/components/inputs}/RadioInput.tsx | 0 .../components/inputs}/SearchTextField.tsx | 0 .../core/components/inputs}/Select.tsx | 0 .../components/inputs}/SortRadioInput.tsx | 2 +- .../components/inputs}/ThreeStateCheckbox.tsx | 0 .../inputs}/ThreeStateCheckboxInput.tsx | 2 +- .../core}/components/menu/IconMenuItem.tsx | 0 .../core}/components/menu/Menu.tsx | 0 .../core/components/menu/Menu.utils.ts} | 3 ++- .../core}/components/menu/MenuItem.tsx | 0 .../core}/components/menu/NestedMenuItem.tsx | 2 +- .../components/placeholder}/EmptyView.tsx | 0 .../EmptyViewAbsoluteCentered.tsx | 2 +- .../placeholder}/LoadingPlaceholder.tsx | 0 .../core}/components/settings/DateSetting.tsx | 0 .../settings/MutableListSetting.tsx | 6 ++--- .../components/settings/NumberSetting.tsx | 0 .../components/settings/SelectSetting.tsx | 4 +-- .../core}/components/settings/TimeSetting.tsx | 0 .../components/settings/text/TextSetting.tsx | 5 +++- .../settings/text/TextSettingDialog.tsx | 2 +- .../core}/components/tabs/TabPanel.tsx | 0 .../core}/components/tabs/TabsMenu.tsx | 0 .../core}/components/tabs/TabsWrapper.tsx | 0 .../components/virtuoso/StyledGroupHeader.tsx | 4 +-- .../virtuoso/StyledGroupItemWrapper.tsx | 0 .../virtuoso/StyledGroupedVirtuoso.tsx | 0 .../core/contexts}/AppContext.tsx | 6 ++--- .../core/hooks}/useBackButton.ts | 0 .../core/hooks}/useDebounce.ts | 0 .../core/hooks}/useHistory.ts | 0 .../core/hooks}/usePersistedValue.tsx | 2 +- .../core/hooks}/useResizeObserver.tsx | 0 .../core/hooks}/useStorage.tsx | 2 +- src/{util => modules/core/utils}/LazyLoad.tsx | 2 +- .../core/utils}/ShouldForwardProp.ts | 0 src/screens/Browse.tsx | 8 +++--- src/screens/DownloadQueue.tsx | 14 +++++----- src/screens/Extensions.tsx | 24 ++++++++--------- src/screens/Library.tsx | 18 ++++++------- src/screens/Manga.tsx | 6 ++--- src/screens/Migrate.tsx | 10 +++---- src/screens/Migration.constants.ts | 3 ++- src/screens/Migration.tsx | 12 ++++----- src/screens/Reader.tsx | 25 +++++++++--------- src/screens/SearchAll.tsx | 20 +++++++------- src/screens/Settings.tsx | 6 ++--- src/screens/SourceConfigure.tsx | 10 +++---- src/screens/SourceMangas.tsx | 13 +++++----- src/screens/Sources.tsx | 14 +++++----- src/screens/TrackerOAuthLogin.tsx | 4 +-- src/screens/Updates.tsx | 26 +++++++++---------- src/screens/settings/About.tsx | 12 ++++----- src/screens/settings/Backup.tsx | 18 ++++++------- src/screens/settings/BrowseSettings.tsx | 18 ++++++------- src/screens/settings/Categories.tsx | 12 ++++----- .../settings/DefaultReaderSettings.tsx | 8 +++--- src/screens/settings/DownloadSettings.tsx | 14 +++++----- src/screens/settings/LibraryDuplicates.tsx | 18 ++++++------- src/screens/settings/LibrarySettings.tsx | 12 ++++----- src/screens/settings/ServerSettings.tsx | 18 ++++++------- src/screens/settings/TrackingSettings.tsx | 10 +++---- src/screens/settings/WebUISettings.tsx | 14 +++++----- .../settings/appearance/Appearance.tsx | 16 ++++++------ .../appearance/theme/CreateThemeButton.tsx | 2 +- .../appearance/theme/CreateThemeDialog.tsx | 13 +++++----- .../settings/appearance/theme/ThemeList.tsx | 8 +++--- .../appearance/theme/ThemePreview.tsx | 4 +-- src/screens/util/Extensions.ts | 4 +-- src/theme.tsx | 2 +- src/typings.ts | 20 +------------- src/util/{date.ts => DateHelper.ts} | 0 src/util/useUpdateChecker.tsx | 4 +-- 173 files changed, 514 insertions(+), 481 deletions(-) create mode 100644 src/Base.types.ts rename src/{util => lib}/AppStorage.ts (100%) rename src/lib/{requests => }/CustomCache.ts (100%) rename src/{util/defaultPromiseErrorHandler.ts => lib/DefaultPromiseErrorHandler.ts} (100%) rename src/{util => lib}/HelperFunctions.ts (100%) rename src/{util/isoLanguages.ts => lib/IsoLanguages.ts} (99%) rename src/{util/language.tsx => lib/Languages.tsx} (84%) create mode 100644 src/lib/reader-router-dom/ReactRouterDom.types.d.ts rename src/lib/requests/{ => requests}/RequestManager.ts (99%) rename src/{components/util/Toast.tsx => lib/ui/Toast.ts} (100%) rename src/{components/util => modules/core/components}/AppbarSearch.tsx (97%) rename src/{components/molecules => modules/core/components}/ConfirmDialog.tsx (100%) rename src/{components/util => modules/core/components}/CustomExtensionOutlinedIcon.tsx (100%) rename src/{components/molecules => modules/core/components}/DownloadStateIndicator.tsx (97%) rename src/{util => modules/core/components}/ErrorBoundary.tsx (100%) rename src/{components/util => modules/core/components}/ListItemLink.tsx (100%) rename src/{components/atoms => modules/core/components}/Metadata.tsx (100%) rename src/{components/molecules => modules/core/components}/OptionsPanel.tsx (100%) rename src/{components/molecules => modules/core/components}/OptionsTabs.tsx (91%) rename src/{components/util => modules/core/components}/Progress.tsx (100%) rename src/{components/util => modules/core/components}/SpinnerImage.tsx (98%) rename src/{lib => modules/core/components}/StrictModeDroppable.tsx (100%) rename src/{components/atoms => modules/core/components}/TypographyMaxLines.tsx (91%) rename src/{components/library => modules/core/components}/UpdateChecker.tsx (95%) rename src/{components/atoms => modules/core/components/buttons}/CustomIconButton.tsx (100%) rename src/{components/util => modules/core/components/buttons}/StyledFab.tsx (100%) rename src/{components/settings/globalUpdate => modules/core/components/inputs}/CheckboxContainer.ts (100%) rename src/{components/atoms => modules/core/components/inputs}/CheckboxInput.tsx (100%) rename src/{components/navbar/action => modules/core/components/inputs}/LangSelect.tsx (98%) rename src/{components/atoms => modules/core/components/inputs}/PasswordTextField.tsx (100%) rename src/{components/atoms => modules/core/components/inputs}/RadioInput.tsx (100%) rename src/{components/atoms => modules/core/components/inputs}/SearchTextField.tsx (100%) rename src/{components/atoms => modules/core/components/inputs}/Select.tsx (100%) rename src/{components/atoms => modules/core/components/inputs}/SortRadioInput.tsx (88%) rename src/{components/atoms => modules/core/components/inputs}/ThreeStateCheckbox.tsx (100%) rename src/{components/atoms => modules/core/components/inputs}/ThreeStateCheckboxInput.tsx (83%) rename src/{ => modules/core}/components/menu/IconMenuItem.tsx (100%) rename src/{ => modules/core}/components/menu/Menu.tsx (100%) rename src/{components/menu/util.ts => modules/core/components/menu/Menu.utils.ts} (96%) rename src/{ => modules/core}/components/menu/MenuItem.tsx (100%) rename src/{ => modules/core}/components/menu/NestedMenuItem.tsx (98%) rename src/{components/util => modules/core/components/placeholder}/EmptyView.tsx (100%) rename src/{components/util => modules/core/components/placeholder}/EmptyViewAbsoluteCentered.tsx (87%) rename src/{components/util => modules/core/components/placeholder}/LoadingPlaceholder.tsx (100%) rename src/{ => modules/core}/components/settings/DateSetting.tsx (100%) rename src/{ => modules/core}/components/settings/MutableListSetting.tsx (97%) rename src/{ => modules/core}/components/settings/NumberSetting.tsx (100%) rename src/{ => modules/core}/components/settings/SelectSetting.tsx (98%) rename src/{ => modules/core}/components/settings/TimeSetting.tsx (100%) rename src/{ => modules/core}/components/settings/text/TextSetting.tsx (91%) rename src/{ => modules/core}/components/settings/text/TextSettingDialog.tsx (97%) rename src/{ => modules/core}/components/tabs/TabPanel.tsx (100%) rename src/{ => modules/core}/components/tabs/TabsMenu.tsx (100%) rename src/{ => modules/core}/components/tabs/TabsWrapper.tsx (100%) rename src/{ => modules/core}/components/virtuoso/StyledGroupHeader.tsx (85%) rename src/{ => modules/core}/components/virtuoso/StyledGroupItemWrapper.tsx (100%) rename src/{ => modules/core}/components/virtuoso/StyledGroupedVirtuoso.tsx (100%) rename src/{components/context => modules/core/contexts}/AppContext.tsx (97%) rename src/{util => modules/core/hooks}/useBackButton.ts (100%) rename src/{util => modules/core/hooks}/useDebounce.ts (100%) rename src/{util => modules/core/hooks}/useHistory.ts (100%) rename src/{util => modules/core/hooks}/usePersistedValue.tsx (92%) rename src/{util => modules/core/hooks}/useResizeObserver.tsx (100%) rename src/{util => modules/core/hooks}/useStorage.tsx (98%) rename src/{util => modules/core/utils}/LazyLoad.tsx (77%) rename src/{lib/ui => modules/core/utils}/ShouldForwardProp.ts (100%) rename src/util/{date.ts => DateHelper.ts} (100%) diff --git a/src/App.tsx b/src/App.tsx index 8c121887..c95bd4ea 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -12,14 +12,14 @@ import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; import { loadErrorMessages, loadDevMessages } from '@apollo/client/dev'; import { loadable } from 'react-lazily/loadable'; import Box from '@mui/material/Box'; -import { AppContext } from '@/components/context/AppContext'; +import { AppContext } from '@/modules/core/contexts/AppContext.tsx'; import '@/i18n'; import { DefaultNavBar } from '@/components/navbar/DefaultNavBar'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { WebUIUpdateChecker } from '@/components/util/WebUIUpdateChecker.tsx'; import { ServerUpdateChecker } from '@/components/util/ServerUpdateChecker.tsx'; -import { lazyLoadFallback } from '@/util/LazyLoad.tsx'; -import { ErrorBoundary } from '@/util/ErrorBoundary.tsx'; +import { lazyLoadFallback } from '@/modules/core/utils/LazyLoad.tsx'; +import { ErrorBoundary } from '@/modules/core/components/ErrorBoundary.tsx'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; const { Browse } = loadable(() => import('@/screens/Browse'), lazyLoadFallback); diff --git a/src/Base.types.ts b/src/Base.types.ts new file mode 100644 index 00000000..1a14c84d --- /dev/null +++ b/src/Base.types.ts @@ -0,0 +1,18 @@ +/* + * Copyright (C) Contributors to the Suwayomi project + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +import { ParseKeys } from 'i18next'; + +export enum DirectionOffset { + PREVIOUS = -1, + NEXT = 1, +} + +export type NullAndUndefined = T | null | undefined; + +export type TranslationKey = ParseKeys; diff --git a/src/components/ExtensionCard.tsx b/src/components/ExtensionCard.tsx index be827b73..8dc6d4ad 100644 --- a/src/components/ExtensionCard.tsx +++ b/src/components/ExtensionCard.tsx @@ -14,12 +14,12 @@ import Avatar from '@mui/material/Avatar'; import Typography from '@mui/material/Typography'; import Box from '@mui/material/Box'; import { useTranslation } from 'react-i18next'; -import { TranslationKey } from '@/typings'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { TExtension } from '@/screens/util/Extensions.ts'; +import { TranslationKey } from '@/Base.types.ts'; interface IProps { extension: TExtension; diff --git a/src/components/MangaCard.tsx b/src/components/MangaCard.tsx index 0b67adcf..f920d499 100644 --- a/src/components/MangaCard.tsx +++ b/src/components/MangaCard.tsx @@ -11,7 +11,7 @@ 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 { Menu } from '@/components/menu/Menu.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'; diff --git a/src/components/MangaGrid.tsx b/src/components/MangaGrid.tsx index 0e642245..8a478cd2 100644 --- a/src/components/MangaGrid.tsx +++ b/src/components/MangaGrid.tsx @@ -21,17 +21,17 @@ import Box, { BoxProps } from '@mui/material/Box'; import { GridItemProps, GridStateSnapshot, VirtuosoGrid } from 'react-virtuoso'; import { useLocation } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { MangaCard } from '@/components/MangaCard'; import { GridLayout } from '@/components/context/LibraryOptionsContext'; -import { useLocalStorage, useSessionStorage } from '@/util/useStorage.tsx'; +import { useLocalStorage, useSessionStorage } from '@/modules/core/hooks/useStorage.tsx'; import { SelectableCollectionReturnType } from '@/components/collection/useSelectableCollection.ts'; -import { DEFAULT_FULL_FAB_HEIGHT } from '@/components/util/StyledFab.tsx'; -import { AppStorage } from '@/util/AppStorage.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 { MangaType } from '@/lib/graphql/generated/graphql.ts'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; const GridContainer = React.forwardRef(({ children, ...props }, ref) => ( diff --git a/src/components/MigrateDialog.tsx b/src/components/MigrateDialog.tsx index 0c7f28fd..17d18c60 100644 --- a/src/components/MigrateDialog.tsx +++ b/src/components/MigrateDialog.tsx @@ -16,15 +16,15 @@ import Stack from '@mui/material/Stack'; import { Link, useNavigate, useParams } from 'react-router-dom'; import { useState } from 'react'; import FormGroup from '@mui/material/FormGroup'; -import { CheckboxInput } from '@/components/atoms/CheckboxInput.tsx'; +import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; import { Mangas, MigrateMode } from '@/lib/data/Mangas.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; import { MetadataMigrationSettings } from '@/typings.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; export const MigrateDialog = ({ mangaIdToMigrateTo, onClose }: { mangaIdToMigrateTo: number; onClose: () => void }) => { const { t } = useTranslation(); diff --git a/src/components/MigrationCard.tsx b/src/components/MigrationCard.tsx index 2c610b85..d5f7a92f 100644 --- a/src/components/MigrationCard.tsx +++ b/src/components/MigrationCard.tsx @@ -15,10 +15,10 @@ import Avatar from '@mui/material/Avatar'; import Typography from '@mui/material/Typography'; import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { GetMigratableSourcesQuery } from '@/lib/graphql/generated/graphql.ts'; import { translateExtensionLanguage } from '@/screens/util/Extensions.ts'; -import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; +import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; export type TMigratableSource = NonNullable & { mangaCount: number; diff --git a/src/components/SourceCard.tsx b/src/components/SourceCard.tsx index 72c80ea1..b5ea9fcb 100644 --- a/src/components/SourceCard.tsx +++ b/src/components/SourceCard.tsx @@ -17,10 +17,10 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; import Stack from '@mui/material/Stack'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { translateExtensionLanguage } from '@/screens/util/Extensions'; import { SourceContentType } from '@/screens/SourceMangas'; -import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; +import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { GetSourcesListQuery } from '@/lib/graphql/generated/graphql.ts'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; diff --git a/src/components/chapter/ChapterActionMenuItems.tsx b/src/components/chapter/ChapterActionMenuItems.tsx index 0cc6b363..cc74951c 100644 --- a/src/components/chapter/ChapterActionMenuItems.tsx +++ b/src/components/chapter/ChapterActionMenuItems.tsx @@ -29,11 +29,15 @@ import { ChapterRealUrlInfo, Chapters, } from '@/lib/data/Chapters.ts'; -import { MenuItem } from '@/components/menu/MenuItem.tsx'; +import { MenuItem } from '@/modules/core/components/menu/MenuItem.tsx'; import { IChapterWithMeta } from '@/components/chapter/ChapterList.tsx'; import { ChaptersWithMeta } from '@/lib/data/ChaptersWithMeta.ts'; -import { createGetMenuItemTitle, createIsMenuItemDisabled, createShouldShowMenuItem } from '@/components/menu/util.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { + createGetMenuItemTitle, + createIsMenuItemDisabled, + createShouldShowMenuItem, +} from '@/modules/core/components/menu/Menu.utils.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; type BaseProps = { onClose: () => void }; diff --git a/src/components/chapter/ChapterCard.tsx b/src/components/chapter/ChapterCard.tsx index e1c96c70..908af3b0 100644 --- a/src/components/chapter/ChapterCard.tsx +++ b/src/components/chapter/ChapterCard.tsx @@ -22,12 +22,12 @@ import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; import { useLongPress } from 'use-long-press'; -import { getDateString } from '@/util/date.ts'; -import { DownloadStateIndicator } from '@/components/molecules/DownloadStateIndicator.tsx'; +import { getDateString } from '@/util/DateHelper.ts'; +import { DownloadStateIndicator } from '@/modules/core/components/DownloadStateIndicator.tsx'; import { ChapterType } from '@/lib/graphql/generated/graphql.ts'; import { ChapterActionMenuItems } from '@/components/chapter/ChapterActionMenuItems.tsx'; -import { Menu } from '@/components/menu/Menu.tsx'; -import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; +import { Menu } from '@/modules/core/components/menu/Menu.tsx'; +import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; import { ChapterBookmarkInfo, ChapterDownloadInfo, diff --git a/src/components/chapter/ChapterList.tsx b/src/components/chapter/ChapterList.tsx index c616bef2..6eae7b30 100644 --- a/src/components/chapter/ChapterList.tsx +++ b/src/components/chapter/ChapterList.tsx @@ -19,14 +19,14 @@ import DownloadIcon from '@mui/icons-material/Download'; import DoneAllIcon from '@mui/icons-material/DoneAll'; import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; import Menu from '@mui/material/Menu'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { ChapterCard } from '@/components/chapter/ChapterCard.tsx'; import { ResumeFab } from '@/components/manga/ResumeFAB.tsx'; import { filterAndSortChapters, useChapterOptions } from '@/components/chapter/util.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { ChaptersToolbarMenu } from '@/components/chapter/ChaptersToolbarMenu.tsx'; import { SelectionFAB } from '@/components/collection/SelectionFAB.tsx'; -import { DEFAULT_FULL_FAB_HEIGHT } from '@/components/util/StyledFab.tsx'; +import { DEFAULT_FULL_FAB_HEIGHT } from '@/modules/core/components/buttons/StyledFab.tsx'; import { GetChaptersMangaQuery, GetChaptersMangaQueryVariables, @@ -38,14 +38,14 @@ import { Chapters } from '@/lib/data/Chapters.ts'; import { ChaptersWithMeta, ChapterWithMetaType } from '@/lib/data/ChaptersWithMeta.ts'; import { ChapterActionMenuItems } from '@/components/chapter/ChapterActionMenuItems.tsx'; import { ChaptersDownloadActionMenuItems } from '@/components/chapter/ChaptersDownloadActionMenuItems.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; +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'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; -import { shouldForwardProp } from '@/lib/ui/ShouldForwardProp.ts'; +import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; type ChapterListHeaderProps = { scrollbarWidth: number; diff --git a/src/components/chapter/ChapterOptions.tsx b/src/components/chapter/ChapterOptions.tsx index 2b631c08..3eb2a82f 100644 --- a/src/components/chapter/ChapterOptions.tsx +++ b/src/components/chapter/ChapterOptions.tsx @@ -9,12 +9,13 @@ import RadioGroup from '@mui/material/RadioGroup'; import React from 'react'; import { useTranslation } from 'react-i18next'; -import { ChapterListOptions, ChapterOptionsReducerAction, TranslationKey } from '@/typings.ts'; -import { RadioInput } from '@/components/atoms/RadioInput.tsx'; -import { SortRadioInput } from '@/components/atoms/SortRadioInput.tsx'; -import { ThreeStateCheckboxInput } from '@/components/atoms/ThreeStateCheckboxInput.tsx'; -import { OptionsTabs } from '@/components/molecules/OptionsTabs.tsx'; +import { ChapterListOptions, ChapterOptionsReducerAction } from '@/typings.ts'; +import { RadioInput } from '@/modules/core/components/inputs/RadioInput.tsx'; +import { SortRadioInput } from '@/modules/core/components/inputs/SortRadioInput.tsx'; +import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; +import { OptionsTabs } from '@/modules/core/components/OptionsTabs.tsx'; import { SORT_OPTIONS } from '@/components/chapter/util.tsx'; +import { TranslationKey } from '@/Base.types.ts'; interface IProps { open: boolean; diff --git a/src/components/chapter/ChaptersDownloadActionMenuItems.tsx b/src/components/chapter/ChaptersDownloadActionMenuItems.tsx index 9c78d165..d859a040 100644 --- a/src/components/chapter/ChaptersDownloadActionMenuItems.tsx +++ b/src/components/chapter/ChaptersDownloadActionMenuItems.tsx @@ -10,7 +10,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 { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; const DownloadRange = { diff --git a/src/components/chapter/util.tsx b/src/components/chapter/util.tsx index 142df138..494b713d 100644 --- a/src/components/chapter/util.tsx +++ b/src/components/chapter/util.tsx @@ -7,16 +7,11 @@ */ import { t } from 'i18next'; -import { - ChapterListOptions, - ChapterOptionsReducerAction, - ChapterSortMode, - NullAndUndefined, - TranslationKey, -} from '@/typings.ts'; -import { useReducerLocalStorage } from '@/util/useStorage.tsx'; +import { ChapterListOptions, ChapterOptionsReducerAction, ChapterSortMode } from '@/typings.ts'; +import { useReducerLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { ChapterBookmarkInfo, ChapterDownloadInfo, ChapterReadInfo } from '@/lib/data/Chapters.ts'; import { ChapterType } from '@/lib/graphql/generated/graphql.ts'; +import { NullAndUndefined, TranslationKey } from '@/Base.types.ts'; const defaultChapterOptions: ChapterListOptions = { active: false, diff --git a/src/components/collection/SelectionFAB.tsx b/src/components/collection/SelectionFAB.tsx index 44b849df..60e7c4db 100644 --- a/src/components/collection/SelectionFAB.tsx +++ b/src/components/collection/SelectionFAB.tsx @@ -13,9 +13,9 @@ import { styled } from '@mui/material/styles'; import React from 'react'; import { useTranslation } from 'react-i18next'; import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; -import { DEFAULT_FAB_STYLE } from '@/components/util/StyledFab.tsx'; -import { TranslationKey } from '@/typings.ts'; -import { Menu } from '@/components/menu/Menu.tsx'; +import { DEFAULT_FAB_STYLE } from '@/modules/core/components/buttons/StyledFab.tsx'; +import { Menu } from '@/modules/core/components/menu/Menu.tsx'; +import { TranslationKey } from '@/Base.types.ts'; interface SelectionFABProps { children: (handleClose: () => void, setHideMenu: (hide: boolean) => void) => JSX.Element; diff --git a/src/components/library/LibraryOptionsPanel.tsx b/src/components/library/LibraryOptionsPanel.tsx index 289adf6b..6be3fe67 100644 --- a/src/components/library/LibraryOptionsPanel.tsx +++ b/src/components/library/LibraryOptionsPanel.tsx @@ -10,25 +10,26 @@ import FormLabel from '@mui/material/FormLabel'; import RadioGroup from '@mui/material/RadioGroup'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { LibrarySortMode, TranslationKey } from '@/typings'; -import { CheckboxInput } from '@/components/atoms/CheckboxInput'; -import { RadioInput } from '@/components/atoms/RadioInput'; -import { SortRadioInput } from '@/components/atoms/SortRadioInput'; -import { ThreeStateCheckboxInput } from '@/components/atoms/ThreeStateCheckboxInput'; +import { LibrarySortMode } from '@/typings'; +import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { RadioInput } from '@/modules/core/components/inputs/RadioInput.tsx'; +import { SortRadioInput } from '@/modules/core/components/inputs/SortRadioInput.tsx'; +import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; import { GridLayout } from '@/components/context/LibraryOptionsContext'; -import { OptionsTabs } from '@/components/molecules/OptionsTabs'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { OptionsTabs } from '@/modules/core/components/OptionsTabs.tsx'; +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 { CategoryMetadataInfo } from '@/lib/data/Categories.ts'; import { createUpdateCategoryMetadata, getCategoryMetadata } from '@/lib/metadata/categoryMetadata.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; +import { TranslationKey } from '@/Base.types.ts'; const TITLES: { [key in 'filter' | 'sort' | 'display']: TranslationKey } = { filter: 'global.label.filter', diff --git a/src/components/library/LibraryOptionsProvider.tsx b/src/components/library/LibraryOptionsProvider.tsx index 5d50702e..57b9193e 100644 --- a/src/components/library/LibraryOptionsProvider.tsx +++ b/src/components/library/LibraryOptionsProvider.tsx @@ -8,7 +8,7 @@ import React, { useMemo } from 'react'; import { LibraryOptions } from '@/typings'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { LibraryOptionsContext } from '@/components/context/LibraryOptionsContext'; import { getDefaultCategoryMetadata } from '@/lib/metadata/categoryMetadata.ts'; diff --git a/src/components/library/useGetVisibleLibraryMangas.ts b/src/components/library/useGetVisibleLibraryMangas.ts index a415d4d0..a582994a 100644 --- a/src/components/library/useGetVisibleLibraryMangas.ts +++ b/src/components/library/useGetVisibleLibraryMangas.ts @@ -8,13 +8,14 @@ import { StringParam, useQueryParam } from 'use-query-params'; import { useMemo } from 'react'; -import { LibraryOptions, LibrarySortMode, NullAndUndefined } from '@/typings.ts'; +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 { enhancedCleanup } from '@/lib/data/Strings.ts'; import { CategoryMetadataInfo } from '@/lib/data/Categories.ts'; import { getCategoryMetadata } from '@/lib/metadata/categoryMetadata.ts'; +import { NullAndUndefined } from '@/Base.types.ts'; const triStateFilter = ( triState: NullAndUndefined, diff --git a/src/components/manga/MangaActionMenuItems.tsx b/src/components/manga/MangaActionMenuItems.tsx index 7e296fae..fe469be4 100644 --- a/src/components/manga/MangaActionMenuItems.tsx +++ b/src/components/manga/MangaActionMenuItems.tsx @@ -28,13 +28,17 @@ import { MangaUnreadInfo, } from '@/lib/data/Mangas.ts'; import { SelectableCollectionReturnType } from '@/components/collection/useSelectableCollection.ts'; -import { MenuItem } from '@/components/menu/MenuItem.tsx'; -import { createGetMenuItemTitle, createIsMenuItemDisabled, createShouldShowMenuItem } from '@/components/menu/util.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { MenuItem } from '@/modules/core/components/menu/MenuItem.tsx'; +import { + createGetMenuItemTitle, + createIsMenuItemDisabled, + createShouldShowMenuItem, +} from '@/modules/core/components/menu/Menu.utils.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { TrackManga } from '@/components/tracker/TrackManga.tsx'; import { useCategorySelect } from '@/components/navbar/action/useCategorySelect.tsx'; import { ChaptersDownloadActionMenuItems } from '@/components/chapter/ChaptersDownloadActionMenuItems.tsx'; -import { NestedMenuItem } from '@/components/menu/NestedMenuItem.tsx'; +import { NestedMenuItem } from '@/modules/core/components/menu/NestedMenuItem.tsx'; import { MangaChapterStatFieldsFragment, MangaType } from '@/lib/graphql/generated/graphql.ts'; const ACTION_DISABLES_SELECTION_MODE: MangaAction[] = ['remove_from_library'] as const; diff --git a/src/components/manga/MangaDetails.tsx b/src/components/manga/MangaDetails.tsx index ab51c846..cd4a5cf2 100644 --- a/src/components/manga/MangaDetails.tsx +++ b/src/components/manga/MangaDetails.tsx @@ -26,19 +26,19 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; 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 '@/components/util/Toast'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { Mangas, MangaThumbnailInfo, MangaTrackRecordInfo, statusToTranslationKey } from '@/lib/data/Mangas.ts'; -import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; -import { CustomIconButton } from '@/components/atoms/CustomIconButton'; +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 { Metadata as BaseMetadata } from '@/components/atoms/Metadata.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +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'; -import { useLocalStorage } from '@/util/useStorage.tsx'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; -import { shouldForwardProp } from '@/lib/ui/ShouldForwardProp.ts'; +import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; const DetailsWrapper = styled('div')(({ theme }) => ({ display: 'flex', diff --git a/src/components/manga/MangaGridCard.tsx b/src/components/manga/MangaGridCard.tsx index 3d748c3f..bba87b59 100644 --- a/src/components/manga/MangaGridCard.tsx +++ b/src/components/manga/MangaGridCard.tsx @@ -15,12 +15,12 @@ import Stack from '@mui/material/Stack'; import Tooltip from '@mui/material/Tooltip'; import { styled } from '@mui/material/styles'; import { useRef } from 'react'; -import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; +import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { MangaOptionButton } from '@/components/manga/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 { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines'; +import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; const BottomGradient = styled('div')({ position: 'absolute', diff --git a/src/components/manga/MangaListCard.tsx b/src/components/manga/MangaListCard.tsx index b08e7b36..4c1dddcd 100644 --- a/src/components/manga/MangaListCard.tsx +++ b/src/components/manga/MangaListCard.tsx @@ -15,8 +15,8 @@ import Stack from '@mui/material/Stack'; import Tooltip from '@mui/material/Tooltip'; import { Link as RouterLink } from 'react-router-dom'; import { useRef } from 'react'; -import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; -import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; +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'; diff --git a/src/components/manga/ResumeFAB.tsx b/src/components/manga/ResumeFAB.tsx index dbc6e575..f7068ec3 100644 --- a/src/components/manga/ResumeFAB.tsx +++ b/src/components/manga/ResumeFAB.tsx @@ -9,7 +9,7 @@ import { Link } from 'react-router-dom'; import PlayArrow from '@mui/icons-material/PlayArrow'; import { useTranslation } from 'react-i18next'; -import { StyledFab } from '@/components/util/StyledFab'; +import { StyledFab } from '@/modules/core/components/buttons/StyledFab.tsx'; interface ResumeFABProps { chapterIndex: number; diff --git a/src/components/manga/TrackMangaButton.tsx b/src/components/manga/TrackMangaButton.tsx index b6ec737a..25967855 100644 --- a/src/components/manga/TrackMangaButton.tsx +++ b/src/components/manga/TrackMangaButton.tsx @@ -12,11 +12,11 @@ import { useTranslation } from 'react-i18next'; import PopupState, { bindDialog, bindTrigger } from 'material-ui-popup-state'; import Dialog from '@mui/material/Dialog'; import CheckIcon from '@mui/icons-material/Check'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { TrackManga } from '@/components/tracker/TrackManga.tsx'; import { Trackers } from '@/lib/data/Trackers.ts'; -import { CustomIconButton } from '@/components/atoms/CustomIconButton.tsx'; +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'; diff --git a/src/components/manga/useManageMangaLibraryState.tsx b/src/components/manga/useManageMangaLibraryState.tsx index 35ad9e39..6d15ee2b 100644 --- a/src/components/manga/useManageMangaLibraryState.tsx +++ b/src/components/manga/useManageMangaLibraryState.tsx @@ -11,11 +11,11 @@ import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import gql from 'graphql-tag'; import { useCategorySelect } from '@/components/navbar/action/useCategorySelect.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { getMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { Categories } from '@/lib/data/Categories.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { Mangas } from '@/lib/data/Mangas.ts'; import { awaitConfirmation } from '@/lib/ui/AwaitableDialog.tsx'; import { GetCategoriesBaseQuery, GetCategoriesBaseQueryVariables, MangaType } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/components/manga/useRefreshManga.ts b/src/components/manga/useRefreshManga.ts index 95a51055..796889db 100644 --- a/src/components/manga/useRefreshManga.ts +++ b/src/components/manga/useRefreshManga.ts @@ -8,7 +8,7 @@ import { useCallback, useState } from 'react'; import { ApolloError } from '@apollo/client'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { baseCleanup } from '@/lib/data/Strings.ts'; export const useRefreshManga = (mangaId: string) => { diff --git a/src/components/navbar/DefaultNavBar.tsx b/src/components/navbar/DefaultNavBar.tsx index a3d6eb86..bbab84d0 100644 --- a/src/components/navbar/DefaultNavBar.tsx +++ b/src/components/navbar/DefaultNavBar.tsx @@ -28,11 +28,11 @@ import Stack from '@mui/material/Stack'; import { useTheme } from '@mui/material/styles'; import { NavbarItem } from '@/typings'; import { NavBarContext } from '@/components/context/NavbarContext'; -import { useBackButton } from '@/util/useBackButton.ts'; +import { useBackButton } from '@/modules/core/hooks/useBackButton.ts'; import { useGetOptionForDirection } from '@/theme.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { DesktopSideBar } from '@/components/navbar/navigation/DesktopSideBar.tsx'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { MobileBottomBar } from '@/components/navbar/navigation/MobileBottomBar.tsx'; const navbarItems: Array = [ diff --git a/src/components/navbar/NavBarContextProvider.tsx b/src/components/navbar/NavBarContextProvider.tsx index 16341a31..2fe17c6b 100644 --- a/src/components/navbar/NavBarContextProvider.tsx +++ b/src/components/navbar/NavBarContextProvider.tsx @@ -9,8 +9,8 @@ import React, { useCallback, useMemo, useState } from 'react'; import { INavbarOverride } from '@/typings'; import { NavBarContext } from '@/components/context/NavbarContext'; -import { useHistory } from '@/util/useHistory.ts'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { useHistory } from '@/modules/core/hooks/useHistory.ts'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; interface IProps { children: React.ReactNode; diff --git a/src/components/navbar/ReaderNavBar.tsx b/src/components/navbar/ReaderNavBar.tsx index 9c1faa20..ef31cd08 100644 --- a/src/components/navbar/ReaderNavBar.tsx +++ b/src/components/navbar/ReaderNavBar.tsx @@ -27,16 +27,17 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Collapse from '@mui/material/Collapse'; import { useTranslation } from 'react-i18next'; -import { AllowedMetadataValueTypes, ChapterOffset, IReaderSettings } from '@/typings'; +import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings'; import { ReaderSettingsOptions } from '@/components/reader/ReaderSettingsOptions'; -import { useBackButton } from '@/util/useBackButton.ts'; -import { Select } from '@/components/atoms/Select.tsx'; +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 { useNavBarContext } from '@/components/context/NavbarContext.tsx'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; -import { CustomIconButton } from '@/components/atoms/CustomIconButton.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; +import { CustomIconButton } from '@/modules/core/components/buttons/CustomIconButton.tsx'; +import { DirectionOffset } from '@/Base.types.ts'; const Root = styled('div')({ zIndex: 10, @@ -99,7 +100,7 @@ interface IProps { chapters: Pick[]; curPage: number; scrollToPage: (page: number) => void; - openNextChapter: (offset: ChapterOffset) => void; + openNextChapter: (offset: DirectionOffset) => void; retrievingNextChapter: boolean; } @@ -319,7 +320,7 @@ export function ReaderNavBar(props: IProps) { openNextChapter(ChapterOffset.PREV)} + onClick={() => openNextChapter(DirectionOffset.PREVIOUS)} > {getOptionForDirection(, )} @@ -358,7 +359,7 @@ export function ReaderNavBar(props: IProps) { chapter.sourceOrder < 1 || chapter.sourceOrder >= manga.chapters.totalCount } - onClick={() => openNextChapter(ChapterOffset.NEXT)} + onClick={() => openNextChapter(DirectionOffset.NEXT)} > {getOptionForDirection(, )} diff --git a/src/components/navbar/action/CategorySelect.tsx b/src/components/navbar/action/CategorySelect.tsx index 56cfe1e7..614aa19f 100644 --- a/src/components/navbar/action/CategorySelect.tsx +++ b/src/components/navbar/action/CategorySelect.tsx @@ -16,14 +16,14 @@ import FormGroup from '@mui/material/FormGroup'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; import Stack from '@mui/material/Stack'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { Mangas } from '@/lib/data/Mangas.ts'; import { useSelectableCollection } from '@/components/collection/useSelectableCollection.ts'; -import { ThreeStateCheckboxInput } from '@/components/atoms/ThreeStateCheckboxInput.tsx'; +import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; import { Categories } from '@/lib/data/Categories.ts'; -import { CheckboxInput } from '@/components/atoms/CheckboxInput.tsx'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { updateMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { GetCategoriesBaseQuery, diff --git a/src/components/navbar/navigation/DesktopSideBar.tsx b/src/components/navbar/navigation/DesktopSideBar.tsx index 6b8e1986..c83c3fbb 100644 --- a/src/components/navbar/navigation/DesktopSideBar.tsx +++ b/src/components/navbar/navigation/DesktopSideBar.tsx @@ -22,10 +22,10 @@ import Box from '@mui/material/Box'; import ListItem from '@mui/material/ListItem'; import Tooltip from '@mui/material/Tooltip'; import { NavbarItem } from '@/typings.ts'; -import { ListItemLink } from '@/components/util/ListItemLink.tsx'; +import { ListItemLink } from '@/modules/core/components/ListItemLink.tsx'; import { useGetOptionForDirection } from '@/theme.tsx'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; const DrawerHeader = styled('div')(({ theme }) => ({ display: 'flex', diff --git a/src/components/navbar/navigation/MobileBottomBar.tsx b/src/components/navbar/navigation/MobileBottomBar.tsx index 9a327d2e..6bc75ea7 100644 --- a/src/components/navbar/navigation/MobileBottomBar.tsx +++ b/src/components/navbar/navigation/MobileBottomBar.tsx @@ -13,7 +13,7 @@ import Paper from '@mui/material/Paper'; import { useCallback, useLayoutEffect, useRef, useState } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; import { NavbarItem } from '@/typings.ts'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; export const MobileBottomBar = ({ navBarItems }: { navBarItems: NavbarItem[] }) => { diff --git a/src/components/reader/DoublePage.tsx b/src/components/reader/DoublePage.tsx index 23e50aa3..ba105ba5 100644 --- a/src/components/reader/DoublePage.tsx +++ b/src/components/reader/DoublePage.tsx @@ -9,7 +9,7 @@ import { CSSProperties, forwardRef } from 'react'; import Box from '@mui/material/Box'; import { IReaderSettings } from '@/typings'; -import { SpinnerImage } from '@/components/util/SpinnerImage'; +import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { imageStyle } from '@/components/reader/Page'; import { getOptionForDirection } from '@/theme.tsx'; diff --git a/src/components/reader/Page.tsx b/src/components/reader/Page.tsx index 168052e1..85f7678e 100644 --- a/src/components/reader/Page.tsx +++ b/src/components/reader/Page.tsx @@ -11,7 +11,7 @@ import Box from '@mui/material/Box'; import { useTheme } from '@mui/material/styles'; import useMediaQuery from '@mui/material/useMediaQuery'; import { IReaderSettings, ReaderType } from '@/typings'; -import { SpinnerImage } from '@/components/util/SpinnerImage'; +import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; export const isHorizontalReaderType = (readerType: ReaderType): boolean => diff --git a/src/components/reader/ReaderSettingsOptions.tsx b/src/components/reader/ReaderSettingsOptions.tsx index 92bc9397..5d655ebb 100644 --- a/src/components/reader/ReaderSettingsOptions.tsx +++ b/src/components/reader/ReaderSettingsOptions.tsx @@ -13,9 +13,9 @@ import Switch from '@mui/material/Switch'; import MenuItem from '@mui/material/MenuItem'; import { useTranslation } from 'react-i18next'; import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; import { isHorizontalReaderType } from '@/components/reader/Page.tsx'; -import { Select } from '@/components/atoms/Select.tsx'; +import { Select } from '@/modules/core/components/inputs/Select.tsx'; interface IProps extends IReaderSettings { setSettingValue: (key: keyof IReaderSettings, value: AllowedMetadataValueTypes, persist?: boolean) => void; diff --git a/src/components/reader/pager/HorizontalPager.tsx b/src/components/reader/pager/HorizontalPager.tsx index 02714dee..609fb2b6 100644 --- a/src/components/reader/pager/HorizontalPager.tsx +++ b/src/components/reader/pager/HorizontalPager.tsx @@ -10,7 +10,7 @@ import { MouseEvent as ReactMouseEvent, WheelEvent as ReactWheelEvent, useCallba import Box from '@mui/material/Box'; import { IReaderProps } from '@/typings'; import { Page } from '@/components/reader/Page'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; const findCurrentPageIndex = (wrapper: HTMLDivElement): number => { for (let i = 0; i < wrapper.children.length; i++) { diff --git a/src/components/reader/pager/VerticalPager.tsx b/src/components/reader/pager/VerticalPager.tsx index 45d3d83a..0d42cd55 100644 --- a/src/components/reader/pager/VerticalPager.tsx +++ b/src/components/reader/pager/VerticalPager.tsx @@ -10,7 +10,7 @@ import { useCallback, useEffect, useRef } from 'react'; import Box from '@mui/material/Box'; import { IReaderProps } from '@/typings'; import { Page } from '@/components/reader/Page'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; const findCurrentPageIndex = (wrapper: HTMLDivElement): number => { for (let i = 0; i < wrapper.children.length; i++) { diff --git a/src/components/settings/CategoriesInclusionSetting.tsx b/src/components/settings/CategoriesInclusionSetting.tsx index 18a02ad8..da176c0a 100644 --- a/src/components/settings/CategoriesInclusionSetting.tsx +++ b/src/components/settings/CategoriesInclusionSetting.tsx @@ -17,11 +17,11 @@ import DialogContentText from '@mui/material/DialogContentText'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; import { t as translate } from 'i18next'; -import { ThreeStateCheckboxInput } from '@/components/atoms/ThreeStateCheckboxInput.tsx'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { IncludeOrExclude } from '@/lib/graphql/generated/graphql.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { CheckboxContainer } from '@/components/settings/globalUpdate/CheckboxContainer.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { CheckboxContainer } from '@/modules/core/components/inputs/CheckboxContainer.ts'; import { CategoryDownloadInclusionInfo, CategoryIdInfo, diff --git a/src/components/settings/DeviceSetting.tsx b/src/components/settings/DeviceSetting.tsx index f4b6eb92..d29f2cf8 100644 --- a/src/components/settings/DeviceSetting.tsx +++ b/src/components/settings/DeviceSetting.tsx @@ -14,14 +14,14 @@ import { useTranslation } from 'react-i18next'; import { useContext, useLayoutEffect } from 'react'; import { updateMetadataServerSettings, useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { MetadataServerSettingKeys, MetadataServerSettings } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { MutableListSetting } from '@/components/settings/MutableListSetting.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { ActiveDevice, DEFAULT_DEVICE } from '@/util/device.ts'; -import { Select } from '@/components/atoms/Select.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { Select } from '@/modules/core/components/inputs/Select.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; export const DeviceSetting = () => { const { t } = useTranslation(); diff --git a/src/components/settings/downloads/DeleteChaptersWhileReadingSetting.tsx b/src/components/settings/downloads/DeleteChaptersWhileReadingSetting.tsx index 5e28ed98..2c8ec1bd 100644 --- a/src/components/settings/downloads/DeleteChaptersWhileReadingSetting.tsx +++ b/src/components/settings/downloads/DeleteChaptersWhileReadingSetting.tsx @@ -11,7 +11,7 @@ import { SelectSetting, SelectSettingValue, SelectSettingValueDisplayInfo, -} from '@/components/settings/SelectSetting.tsx'; +} from '@/modules/core/components/settings/SelectSetting.tsx'; const CHAPTERS_TO_DELETE = [0, 1, 2, 3, 4, 5] as const; const CHAPTERS_TO_DELETE_TO_TRANSLATION_KEY: { diff --git a/src/components/settings/downloads/DownloadAheadSetting.tsx b/src/components/settings/downloads/DownloadAheadSetting.tsx index 8ff44e6b..74e144fa 100644 --- a/src/components/settings/downloads/DownloadAheadSetting.tsx +++ b/src/components/settings/downloads/DownloadAheadSetting.tsx @@ -11,11 +11,11 @@ import List from '@mui/material/List'; import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { getPersistedServerSetting, usePersistedValue } from '@/util/usePersistedValue.tsx'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx'; import { updateMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { MetadataDownloadSettings, MetadataServerSettings } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; const MIN_LIMIT = 2; const MAX_LIMIT = 10; diff --git a/src/components/settings/globalUpdate/GlobalUpdateSettings.tsx b/src/components/settings/globalUpdate/GlobalUpdateSettings.tsx index 535b313d..6103e9b0 100644 --- a/src/components/settings/globalUpdate/GlobalUpdateSettings.tsx +++ b/src/components/settings/globalUpdate/GlobalUpdateSettings.tsx @@ -18,8 +18,8 @@ import { } from '@/components/settings/CategoriesInclusionSetting.tsx'; import { GlobalUpdateSettingsEntries } from '@/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx'; import { GlobalUpdateSettingsInterval } from '@/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { ServerSettings } from '@/typings.ts'; type LibrarySettingsType = Pick; diff --git a/src/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx b/src/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx index eb529eeb..c4009944 100644 --- a/src/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx +++ b/src/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx @@ -16,11 +16,12 @@ import Dialog from '@mui/material/Dialog'; import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; import DialogTitle from '@mui/material/DialogTitle'; -import { ServerSettings, TranslationKey } from '@/typings.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { CheckboxContainer } from '@/components/settings/globalUpdate/CheckboxContainer.ts'; -import { CheckboxInput } from '@/components/atoms/CheckboxInput.tsx'; +import { ServerSettings } from '@/typings.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { CheckboxContainer } from '@/modules/core/components/inputs/CheckboxContainer.ts'; +import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +import { TranslationKey } from '@/Base.types.ts'; type GlobalUpdateSkipEntriesSettings = Pick< ServerSettings, diff --git a/src/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx b/src/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx index 59336cdd..4f26d3cd 100644 --- a/src/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx +++ b/src/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx @@ -12,9 +12,9 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { useCallback } from 'react'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { getPersistedServerSetting, usePersistedValue } from '@/util/usePersistedValue.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx'; import { ServerSettings } from '@/typings.ts'; const DEFAULT_INTERVAL_HOURS = 12; diff --git a/src/components/settings/webUI/WebUIUpdateIntervalSetting.tsx b/src/components/settings/webUI/WebUIUpdateIntervalSetting.tsx index 5f6adb22..05d9f187 100644 --- a/src/components/settings/webUI/WebUIUpdateIntervalSetting.tsx +++ b/src/components/settings/webUI/WebUIUpdateIntervalSetting.tsx @@ -12,11 +12,11 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { useCallback } from 'react'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { getPersistedServerSetting, usePersistedValue } from '@/util/usePersistedValue.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx'; import { ServerSettings } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; const DEFAULT_VALUE = 23; const MIN_VALUE = 1; diff --git a/src/components/source/SourceGridLayout.tsx b/src/components/source/SourceGridLayout.tsx index b6b78570..181b087a 100644 --- a/src/components/source/SourceGridLayout.tsx +++ b/src/components/source/SourceGridLayout.tsx @@ -8,7 +8,7 @@ import { GridLayout } from '@/components/context/LibraryOptionsContext'; import { GridLayouts } from '@/components/source/GridLayouts.tsx'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; export function SourceGridLayout() { const [sourceGridLayout, setSourceGridLayout] = useLocalStorage('source-grid-layout', GridLayout.Compact); diff --git a/src/components/source/SourceOptions.tsx b/src/components/source/SourceOptions.tsx index e194ff07..b40bf7e6 100644 --- a/src/components/source/SourceOptions.tsx +++ b/src/components/source/SourceOptions.tsx @@ -25,7 +25,7 @@ import DialogContent from '@mui/material/DialogContent'; import TextField from '@mui/material/TextField'; import Tooltip from '@mui/material/Tooltip'; import { ISourceMetadata, SourceFilters } from '@/typings'; -import { OptionsPanel } from '@/components/molecules/OptionsPanel'; +import { OptionsPanel } from '@/modules/core/components/OptionsPanel.tsx'; import { CheckBoxFilter } from '@/components/source/filters/CheckBoxFilter'; import { HeaderFilter } from '@/components/source/filters/HeaderFilter'; import { SelectFilter } from '@/components/source/filters/SelectFilter'; @@ -36,9 +36,9 @@ import { TriStateFilter } from '@/components/source/filters/TriStateFilter'; // eslint-disable-next-line import/no-cycle import { GroupFilter } from '@/components/source/filters/GroupFilter'; import { SeparatorFilter } from '@/components/source/filters/SeparatorFilter'; -import { StyledFab } from '@/components/util/StyledFab'; +import { StyledFab } from '@/modules/core/components/buttons/StyledFab.tsx'; import { awaitConfirmation } from '@/lib/ui/AwaitableDialog.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; interface IFilters { sourceFilter: SourceFilters[]; diff --git a/src/components/source/filters/CheckBoxFilter.tsx b/src/components/source/filters/CheckBoxFilter.tsx index be5da750..8602bd93 100644 --- a/src/components/source/filters/CheckBoxFilter.tsx +++ b/src/components/source/filters/CheckBoxFilter.tsx @@ -7,7 +7,7 @@ */ import React from 'react'; -import { CheckboxInput } from '@/components/atoms/CheckboxInput'; +import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; interface Props { state: boolean; diff --git a/src/components/source/filters/SortFilter.tsx b/src/components/source/filters/SortFilter.tsx index 8526f2ae..979a0440 100644 --- a/src/components/source/filters/SortFilter.tsx +++ b/src/components/source/filters/SortFilter.tsx @@ -14,7 +14,7 @@ import ListItemText from '@mui/material/ListItemText'; import Stack from '@mui/material/Stack'; import Box from '@mui/material/Box'; import React from 'react'; -import { SortRadioInput } from '@/components/atoms/SortRadioInput'; +import { SortRadioInput } from '@/modules/core/components/inputs/SortRadioInput.tsx'; import { SortSelectionInput } from '@/lib/graphql/generated/graphql.ts'; interface Props { diff --git a/src/components/source/filters/TextFilter.tsx b/src/components/source/filters/TextFilter.tsx index 51c287c4..bdd4aaab 100644 --- a/src/components/source/filters/TextFilter.tsx +++ b/src/components/source/filters/TextFilter.tsx @@ -12,7 +12,7 @@ import Input from '@mui/material/Input'; import InputAdornment from '@mui/material/InputAdornment'; import InputLabel from '@mui/material/InputLabel'; import React, { useEffect } from 'react'; -import { useDebounce } from '@/util/useDebounce.ts'; +import { useDebounce } from '@/modules/core/hooks/useDebounce.ts'; interface Props { state: string; diff --git a/src/components/source/filters/TriStateFilter.tsx b/src/components/source/filters/TriStateFilter.tsx index a2af3647..434cdb7e 100644 --- a/src/components/source/filters/TriStateFilter.tsx +++ b/src/components/source/filters/TriStateFilter.tsx @@ -7,7 +7,7 @@ */ import React from 'react'; -import { ThreeStateCheckboxInput } from '@/components/atoms/ThreeStateCheckboxInput'; +import { ThreeStateCheckboxInput } from '@/modules/core/components/inputs/ThreeStateCheckboxInput.tsx'; import { TriState } from '@/lib/graphql/generated/graphql.ts'; interface Props { diff --git a/src/components/tracker/SettingsTrackerCard.tsx b/src/components/tracker/SettingsTrackerCard.tsx index ab81e62e..0fa7c33b 100644 --- a/src/components/tracker/SettingsTrackerCard.tsx +++ b/src/components/tracker/SettingsTrackerCard.tsx @@ -21,9 +21,9 @@ import DialogContent from '@mui/material/DialogContent'; import TextField from '@mui/material/TextField'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; -import { PasswordTextField } from '@/components/atoms/PasswordTextField.tsx'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { PasswordTextField } from '@/modules/core/components/inputs/PasswordTextField.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { Trackers, TTrackerSearch } from '@/lib/data/Trackers.ts'; export const SettingsTrackerCard = ({ tracker }: { tracker: TTrackerSearch }) => { diff --git a/src/components/tracker/TrackManga.tsx b/src/components/tracker/TrackManga.tsx index 31f2da9a..4d98821b 100644 --- a/src/components/tracker/TrackManga.tsx +++ b/src/components/tracker/TrackManga.tsx @@ -11,13 +11,13 @@ import Box from '@mui/material/Box'; import { useEffect, useMemo, useState } from 'react'; import DialogContent from '@mui/material/DialogContent'; import { useTranslation } from 'react-i18next'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { Trackers } from '@/lib/data/Trackers.ts'; import { TrackerCard, TrackerMode } from '@/components/tracker/TrackerCard.tsx'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +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'; diff --git a/src/components/tracker/TrackerActiveCard.tsx b/src/components/tracker/TrackerActiveCard.tsx index 79c7d655..90df7115 100644 --- a/src/components/tracker/TrackerActiveCard.tsx +++ b/src/components/tracker/TrackerActiveCard.tsx @@ -28,17 +28,17 @@ import Typography from '@mui/material/Typography'; import MoreVertIcon from '@mui/icons-material/MoreVert'; import PopupState, { bindDialog, bindMenu, bindTrigger } from 'material-ui-popup-state'; import { useMemo, useState } from 'react'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { Trackers, TTrackerBind, TTrackRecordBind, UNSET_DATE } from '@/lib/data/Trackers.ts'; import { ListPreference } from '@/components/sourceConfiguration/ListPreference.tsx'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { DateSetting } from '@/components/settings/DateSetting.tsx'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { Menu } from '@/components/menu/Menu'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { DateSetting } from '@/modules/core/components/settings/DateSetting.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { Menu } from '@/modules/core/components/menu/Menu'; import { CARD_STYLING } from '@/components/tracker/constants.ts'; -import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; -import { SelectSetting, SelectSettingValue } from '@/components/settings/SelectSetting.tsx'; -import { CheckboxInput } from '@/components/atoms/CheckboxInput'; +import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; +import { SelectSetting, SelectSettingValue } from '@/modules/core/components/settings/SelectSetting.tsx'; +import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; import { TrackRecordType } from '@/lib/graphql/generated/graphql.ts'; const TrackerActiveLink = ({ children, url }: { children: React.ReactNode; url: string }) => ( diff --git a/src/components/tracker/TrackerMangaCard.tsx b/src/components/tracker/TrackerMangaCard.tsx index 4467b294..c40b58b4 100644 --- a/src/components/tracker/TrackerMangaCard.tsx +++ b/src/components/tracker/TrackerMangaCard.tsx @@ -22,9 +22,9 @@ import { useLayoutEffect, useRef, useState } from 'react'; import parseHtml from 'html-react-parser'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import sanitizeHtml from 'sanitize-html'; -import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; -import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; -import { Metadata } from '@/components/atoms/Metadata.tsx'; +import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; +import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; +import { Metadata } from '@/modules/core/components/Metadata.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { TTrackerManga } from '@/lib/data/Trackers.ts'; diff --git a/src/components/tracker/TrackerSearch.tsx b/src/components/tracker/TrackerSearch.tsx index df5007df..0ebb02df 100644 --- a/src/components/tracker/TrackerSearch.tsx +++ b/src/components/tracker/TrackerSearch.tsx @@ -21,16 +21,16 @@ import InfoIcon from '@mui/icons-material/Info'; import PopupState, { bindPopover, bindTrigger } from 'material-ui-popup-state'; import Popover from '@mui/material/Popover'; import Typography from '@mui/material/Typography'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { Tracker, TTrackerBase } from '@/lib/data/Trackers.ts'; -import { SearchTextField } from '@/components/atoms/SearchTextField.tsx'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { SearchTextField } from '@/modules/core/components/inputs/SearchTextField.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { TrackerMangaCard } from '@/components/tracker/TrackerMangaCard.tsx'; import { DIALOG_PADDING } from '@/components/tracker/constants.ts'; import { useGetOptionForDirection } from '@/theme.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { MangaType } from '@/lib/graphql/generated/graphql.ts'; import { MangaIdInfo } from '@/lib/data/Mangas.ts'; diff --git a/src/components/tracker/TrackerUntrackedCard.tsx b/src/components/tracker/TrackerUntrackedCard.tsx index ff05a937..9b07323d 100644 --- a/src/components/tracker/TrackerUntrackedCard.tsx +++ b/src/components/tracker/TrackerUntrackedCard.tsx @@ -12,7 +12,7 @@ import Avatar from '@mui/material/Avatar'; import Button from '@mui/material/Button'; import { useTranslation } from 'react-i18next'; import Stack from '@mui/material/Stack'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { CARD_STYLING } from '@/components/tracker/constants.ts'; import { TTrackerBase } from '@/lib/data/Trackers.ts'; diff --git a/src/components/util/ServerUpdateChecker.tsx b/src/components/util/ServerUpdateChecker.tsx index 9076fe94..0721e353 100644 --- a/src/components/util/ServerUpdateChecker.tsx +++ b/src/components/util/ServerUpdateChecker.tsx @@ -14,12 +14,12 @@ import DialogContent from '@mui/material/DialogContent'; import DialogContentText from '@mui/material/DialogContentText'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { getVersion } from '@/screens/settings/About.tsx'; import { useUpdateChecker } from '@/util/useUpdateChecker.tsx'; import { VersionUpdateInfoDialog } from '@/components/util/VersionUpdateInfoDialog.tsx'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; const disabledUpdateCheck = () => Promise.resolve(); diff --git a/src/components/util/WebUIUpdateChecker.tsx b/src/components/util/WebUIUpdateChecker.tsx index fb188357..953d094a 100644 --- a/src/components/util/WebUIUpdateChecker.tsx +++ b/src/components/util/WebUIUpdateChecker.tsx @@ -14,11 +14,11 @@ import DialogContent from '@mui/material/DialogContent'; import DialogContentText from '@mui/material/DialogContentText'; import DialogActions from '@mui/material/DialogActions'; import Button from '@mui/material/Button'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { UpdateState, WebUiChannel, WebUiUpdateStatus } from '@/lib/graphql/generated/graphql.ts'; -import { useLocalStorage } from '@/util/useStorage.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { ABOUT_WEBUI, WEBUI_UPDATE_CHECK } from '@/lib/graphql/fragments/InfoFragments.ts'; import { VersionUpdateInfoDialog } from '@/components/util/VersionUpdateInfoDialog.tsx'; import { useUpdateChecker } from '@/util/useUpdateChecker'; diff --git a/src/index.tsx b/src/index.tsx index 09afa26a..28a6094e 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -13,7 +13,7 @@ import { App } from '@/App'; import '@/index.css'; // roboto font import '@fontsource/roboto'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import '@/lib/dayjs/Setup.ts'; if ('serviceWorker' in navigator) { diff --git a/src/util/AppStorage.ts b/src/lib/AppStorage.ts similarity index 100% rename from src/util/AppStorage.ts rename to src/lib/AppStorage.ts diff --git a/src/lib/requests/CustomCache.ts b/src/lib/CustomCache.ts similarity index 100% rename from src/lib/requests/CustomCache.ts rename to src/lib/CustomCache.ts diff --git a/src/util/defaultPromiseErrorHandler.ts b/src/lib/DefaultPromiseErrorHandler.ts similarity index 100% rename from src/util/defaultPromiseErrorHandler.ts rename to src/lib/DefaultPromiseErrorHandler.ts diff --git a/src/util/HelperFunctions.ts b/src/lib/HelperFunctions.ts similarity index 100% rename from src/util/HelperFunctions.ts rename to src/lib/HelperFunctions.ts diff --git a/src/util/isoLanguages.ts b/src/lib/IsoLanguages.ts similarity index 99% rename from src/util/isoLanguages.ts rename to src/lib/IsoLanguages.ts index 13208641..bad706b6 100644 --- a/src/util/isoLanguages.ts +++ b/src/lib/IsoLanguages.ts @@ -14,7 +14,7 @@ export type ISOLanguage = { }; // full list: https://github.com/meikidd/iso-639-1/blob/master/src/data.js -export const ISOLanguages: { [languageCode in I18nResourceCode]: ISOLanguage } & Record = { +export const IsoLanguages: { [languageCode in I18nResourceCode]: ISOLanguage } & Record = { // ############################# // ### ### // ### START: manually added ### diff --git a/src/util/language.tsx b/src/lib/Languages.tsx similarity index 84% rename from src/util/language.tsx rename to src/lib/Languages.tsx index 6e997b1a..69877648 100644 --- a/src/util/language.tsx +++ b/src/lib/Languages.tsx @@ -7,7 +7,7 @@ */ import { t } from 'i18next'; -import { ISOLanguage, ISOLanguages } from '@/util/isoLanguages.ts'; +import { ISOLanguage, IsoLanguages } from '@/lib/IsoLanguages.ts'; export enum DefaultLanguage { ALL = 'all', @@ -16,18 +16,18 @@ export enum DefaultLanguage { } function getISOLanguage(code: string): ISOLanguage | null { - if (ISOLanguages[code]) { - return ISOLanguages[code]; + if (IsoLanguages[code]) { + return IsoLanguages[code]; } - if (ISOLanguages[code.toLocaleLowerCase()]) { - return ISOLanguages[code.toLocaleLowerCase()]; + if (IsoLanguages[code.toLocaleLowerCase()]) { + return IsoLanguages[code.toLocaleLowerCase()]; } const whereToCut = code.indexOf('-') !== -1 ? code.indexOf('-') : code.length; const processedCode = code.toLocaleLowerCase().substring(0, whereToCut); - if (ISOLanguages[processedCode]) { - return ISOLanguages[processedCode]; + if (IsoLanguages[processedCode]) { + return IsoLanguages[processedCode]; } return null; diff --git a/src/lib/data/Chapters.ts b/src/lib/data/Chapters.ts index eee149ad..bf4d9b85 100644 --- a/src/lib/data/Chapters.ts +++ b/src/lib/data/Chapters.ts @@ -9,9 +9,8 @@ import { t as translate } from 'i18next'; import gql from 'graphql-tag'; import { DocumentNode } from '@apollo/client'; -import { ChapterOffset, TranslationKey } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { getMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { ChapterListFieldsFragment, @@ -21,6 +20,8 @@ import { import { CHAPTER_LIST_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; import { MangaIdInfo } from '@/lib/data/Mangas.ts'; +import { DirectionOffset, TranslationKey } from '@/Base.types.ts'; + export type ChapterAction = 'download' | 'delete' | 'bookmark' | 'unbookmark' | 'mark_as_read' | 'mark_as_unread'; export const actionToTranslationKey: { @@ -348,13 +349,13 @@ export class Chapters { currentChapter: Chapter, chapters: Chapter[], { - offset = ChapterOffset.NEXT, + offset = DirectionOffset.NEXT, ...options - }: { offset?: ChapterOffset; onlyUnread?: boolean; skipDupe?: boolean; skipDupeChapter?: Chapter } = {}, + }: { offset?: DirectionOffset; onlyUnread?: boolean; skipDupe?: boolean; skipDupeChapter?: Chapter } = {}, ): Chapter | undefined { const nextChapters = Chapters.getNextChapters(currentChapter, chapters, { offset, ...options }); - const isNextChapterOffset = offset === ChapterOffset.NEXT; + const isNextChapterOffset = offset === DirectionOffset.NEXT; const sliceStartIndex = isNextChapterOffset ? -1 : 0; const sliceEndIndex = isNextChapterOffset ? undefined : 1; @@ -365,15 +366,15 @@ export class Chapters { fromChapter: Chapter, chapters: Chapter[], { - offset = ChapterOffset.NEXT, + offset = DirectionOffset.NEXT, onlyUnread = false, skipDupe = false, skipDupeChapter = fromChapter, - }: { offset?: ChapterOffset; onlyUnread?: boolean; skipDupe?: boolean; skipDupeChapter?: Chapter } = {}, + }: { offset?: DirectionOffset; onlyUnread?: boolean; skipDupe?: boolean; skipDupeChapter?: Chapter } = {}, ): Chapter[] { const fromChapterIndex = chapters.findIndex((chapter) => chapter.id === fromChapter.id); - const isNextChapterOffset = offset === ChapterOffset.NEXT; + const isNextChapterOffset = offset === DirectionOffset.NEXT; const sliceStartIndex = isNextChapterOffset ? 0 : fromChapterIndex; const sliceEndIndex = isNextChapterOffset ? fromChapterIndex + 1 : undefined; diff --git a/src/lib/data/Mangas.ts b/src/lib/data/Mangas.ts index b119ece6..aea6f7f6 100644 --- a/src/lib/data/Mangas.ts +++ b/src/lib/data/Mangas.ts @@ -8,8 +8,8 @@ import { t as translate } from 'i18next'; import { DocumentNode } from '@apollo/client/core'; -import { MetadataMigrationSettings, TranslationKey } from '@/typings.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { MetadataMigrationSettings } from '@/typings.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { ChapterConditionInput, GetMangasBaseQuery, @@ -25,10 +25,11 @@ import { UpdateMangaCategoriesPatchInput, } from '@/lib/graphql/generated/graphql.ts'; import { Chapters } from '@/lib/data/Chapters.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { getMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { GET_MANGAS_BASE } from '@/lib/graphql/queries/MangaQuery.ts'; import { MANGA_BASE_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts'; +import { TranslationKey } from '@/Base.types.ts'; export type MangaAction = | 'download' diff --git a/src/lib/metadata/categoryMetadata.ts b/src/lib/metadata/categoryMetadata.ts index 283f6477..20a7a6ee 100644 --- a/src/lib/metadata/categoryMetadata.ts +++ b/src/lib/metadata/categoryMetadata.ts @@ -15,9 +15,9 @@ import { LibraryOptions, Metadata, } from '@/typings.ts'; -import { jsonSaveParse } from '@/util/HelperFunctions.ts'; +import { jsonSaveParse } from '@/lib/HelperFunctions.ts'; import { convertFromGqlMeta, getMetadataFrom, requestUpdateCategoryMetadata } from '@/lib/metadata/metadata.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { CategoryIdInfo } from '@/lib/data/Categories.ts'; import { GridLayout } from '@/components/context/LibraryOptionsContext.tsx'; diff --git a/src/lib/metadata/metadata.ts b/src/lib/metadata/metadata.ts index df1601a5..139ae323 100644 --- a/src/lib/metadata/metadata.ts +++ b/src/lib/metadata/metadata.ts @@ -15,7 +15,7 @@ import { MetadataHolder, MetadataKeyValuePair, } from '@/typings.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { MetaType, SourceType } from '@/lib/graphql/generated/graphql.ts'; import { DEFAULT_DEVICE, getActiveDevice } from '@/util/device.ts'; import { CategoryIdInfo } from '@/lib/data/Categories.ts'; diff --git a/src/lib/metadata/metadataServerSettings.ts b/src/lib/metadata/metadataServerSettings.ts index a2c5d9e5..45927b74 100644 --- a/src/lib/metadata/metadataServerSettings.ts +++ b/src/lib/metadata/metadataServerSettings.ts @@ -15,11 +15,11 @@ import { MetadataServerSettings, MetadataThemeSettings, } from '@/typings.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { convertFromGqlMeta, getMetadataFrom, requestUpdateServerMetadata } from '@/lib/metadata/metadata.ts'; -import { jsonSaveParse } from '@/util/HelperFunctions.ts'; +import { jsonSaveParse } from '@/lib/HelperFunctions.ts'; import { DEFAULT_DEVICE } from '@/util/device.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { DEFAULT_SORT_SETTINGS } from '@/screens/Migration.constants.ts'; export const getDefaultSettings = (): MetadataServerSettings => ({ diff --git a/src/lib/metadata/readerSettings.ts b/src/lib/metadata/readerSettings.ts index ff99ae01..1eb24431 100644 --- a/src/lib/metadata/readerSettings.ts +++ b/src/lib/metadata/readerSettings.ts @@ -7,7 +7,7 @@ */ import { Metadata, IReaderSettings, MetadataKeyValuePair, GqlMetaHolder } from '@/typings.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { convertFromGqlMeta, getMetadataFrom, diff --git a/src/lib/metadata/sourceMetadata.ts b/src/lib/metadata/sourceMetadata.ts index 07f51852..64e87fd9 100644 --- a/src/lib/metadata/sourceMetadata.ts +++ b/src/lib/metadata/sourceMetadata.ts @@ -14,9 +14,9 @@ import { Metadata, SourceMetadataKeys, } from '@/typings.ts'; -import { jsonSaveParse } from '@/util/HelperFunctions.ts'; +import { jsonSaveParse } from '@/lib/HelperFunctions.ts'; import { convertFromGqlMeta, getMetadataFrom, requestUpdateSourceMetadata } from '@/lib/metadata/metadata.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { SourceType } from '@/lib/graphql/generated/graphql.ts'; const convertAppMetadataToGqlMetadata = ( diff --git a/src/lib/reader-router-dom/ReactRouterDom.types.d.ts b/src/lib/reader-router-dom/ReactRouterDom.types.d.ts new file mode 100644 index 00000000..ff336637 --- /dev/null +++ b/src/lib/reader-router-dom/ReactRouterDom.types.d.ts @@ -0,0 +1,17 @@ +/* + * Copyright (C) Contributors to the Suwayomi project + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +import { Location } from 'react-router-dom'; + +type GenericLocation = Omit & { state?: State }; + +declare module 'react-router-dom' { + export function useParams(): Params; + + export function useLocation(): GenericLocation; +} diff --git a/src/lib/requests/client/BaseClient.ts b/src/lib/requests/client/BaseClient.ts index 295db28a..d56e05e3 100644 --- a/src/lib/requests/client/BaseClient.ts +++ b/src/lib/requests/client/BaseClient.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { AppStorage } from '@/util/AppStorage.ts'; +import { AppStorage } from '@/lib/AppStorage.ts'; export abstract class BaseClient { protected abstract client: Client; diff --git a/src/lib/requests/RequestManager.ts b/src/lib/requests/requests/RequestManager.ts similarity index 99% rename from src/lib/requests/RequestManager.ts rename to src/lib/requests/requests/RequestManager.ts index 8a8d247c..aa47fa17 100644 --- a/src/lib/requests/RequestManager.ts +++ b/src/lib/requests/requests/RequestManager.ts @@ -276,7 +276,7 @@ import { UPDATE_LIBRARY_MANGAS, } from '@/lib/graphql/mutations/UpdaterMutation.ts'; import { GET_LAST_UPDATE_TIMESTAMP, GET_UPDATE_STATUS } from '@/lib/graphql/queries/UpdaterQuery.ts'; -import { CustomCache } from '@/lib/requests/CustomCache.ts'; +import { CustomCache } from '@/lib/CustomCache.ts'; import { RESTORE_BACKUP } from '@/lib/graphql/mutations/BackupMutation.ts'; import { GET_RESTORE_STATUS, VALIDATE_BACKUP } from '@/lib/graphql/queries/BackupQuery.ts'; import { DOWNLOAD_STATUS_SUBSCRIPTION } from '@/lib/graphql/subscriptions/DownloaderSubscription.ts'; @@ -287,7 +287,7 @@ import { CLEAR_SERVER_CACHE } from '@/lib/graphql/mutations/ImageMutation.ts'; import { RESET_WEBUI_UPDATE_STATUS, UPDATE_WEBUI } from '@/lib/graphql/mutations/ServerInfoMutation.ts'; import { WEBUI_UPDATE_SUBSCRIPTION } from '@/lib/graphql/subscriptions/ServerInfoSubscription.ts'; import { GET_DOWNLOAD_STATUS } from '@/lib/graphql/queries/DownloaderQuery.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { Queue, QueuePriority } from '@/lib/Queue.ts'; import { TRACKER_SEARCH } from '@/lib/graphql/queries/TrackerQuery.ts'; import { @@ -305,7 +305,7 @@ import { DOWNLOAD_STATUS_FIELDS } from '@/lib/graphql/fragments/DownloadFragment 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 { GLOBAL_METADATA } from '@/lib/graphql/fragments/Fragments'; +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'; import { CHAPTER_META_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; diff --git a/src/lib/ui/AppThemes.ts b/src/lib/ui/AppThemes.ts index b7da24b0..18287f21 100644 --- a/src/lib/ui/AppThemes.ts +++ b/src/lib/ui/AppThemes.ts @@ -9,7 +9,7 @@ import { ThemeOptions } from '@mui/material/styles'; import { t as translate } from 'i18next'; import WebFont from 'webfontloader'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { ControlledPromise } from '@/lib/ControlledPromise.ts'; type Theme = { isCustom: boolean; getName: () => string; muiTheme: ThemeOptions }; diff --git a/src/lib/ui/AwaitableDialog.tsx b/src/lib/ui/AwaitableDialog.tsx index 62468204..db9d5885 100644 --- a/src/lib/ui/AwaitableDialog.tsx +++ b/src/lib/ui/AwaitableDialog.tsx @@ -8,7 +8,7 @@ import { createRoot } from 'react-dom/client'; import { ThemeProvider } from '@mui/material/styles'; -import { ConfirmDialog } from '@/components/molecules/ConfirmDialog.tsx'; +import { ConfirmDialog } from '@/modules/core/components/ConfirmDialog.tsx'; import { ControlledPromise } from '@/lib/ControlledPromise.ts'; import { getCurrentTheme } from '@/theme.tsx'; diff --git a/src/lib/ui/MediaQuery.tsx b/src/lib/ui/MediaQuery.tsx index c1488beb..0a6650ba 100644 --- a/src/lib/ui/MediaQuery.tsx +++ b/src/lib/ui/MediaQuery.tsx @@ -11,8 +11,8 @@ import { Breakpoint } from '@mui/material/styles'; import { useCallback, useState } from 'react'; import { getCurrentTheme } from '@/theme.tsx'; import { ThemeMode } from '@/components/context/ThemeModeContext.tsx'; -import { AppStorage } from '@/util/AppStorage.ts'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { AppStorage } from '@/lib/AppStorage.ts'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; export class MediaQuery { static useIsTouchDevice(): boolean { diff --git a/src/components/util/Toast.tsx b/src/lib/ui/Toast.ts similarity index 100% rename from src/components/util/Toast.tsx rename to src/lib/ui/Toast.ts diff --git a/src/components/util/AppbarSearch.tsx b/src/modules/core/components/AppbarSearch.tsx similarity index 97% rename from src/components/util/AppbarSearch.tsx rename to src/modules/core/components/AppbarSearch.tsx index 3e808add..d537c68f 100644 --- a/src/components/util/AppbarSearch.tsx +++ b/src/modules/core/components/AppbarSearch.tsx @@ -14,7 +14,7 @@ import { useQueryParam, StringParam } from 'use-query-params'; import { useTranslation } from 'react-i18next'; import { useLocation } from 'react-router-dom'; import { useTheme } from '@mui/material/styles'; -import { SearchTextField } from '@/components/atoms/SearchTextField.tsx'; +import { SearchTextField } from '@/modules/core/components/inputs/SearchTextField.tsx'; interface IProps { isClosable?: boolean; diff --git a/src/components/molecules/ConfirmDialog.tsx b/src/modules/core/components/ConfirmDialog.tsx similarity index 100% rename from src/components/molecules/ConfirmDialog.tsx rename to src/modules/core/components/ConfirmDialog.tsx diff --git a/src/components/util/CustomExtensionOutlinedIcon.tsx b/src/modules/core/components/CustomExtensionOutlinedIcon.tsx similarity index 100% rename from src/components/util/CustomExtensionOutlinedIcon.tsx rename to src/modules/core/components/CustomExtensionOutlinedIcon.tsx diff --git a/src/components/molecules/DownloadStateIndicator.tsx b/src/modules/core/components/DownloadStateIndicator.tsx similarity index 97% rename from src/components/molecules/DownloadStateIndicator.tsx rename to src/modules/core/components/DownloadStateIndicator.tsx index 9ab7bb3b..8e387ec0 100644 --- a/src/components/molecules/DownloadStateIndicator.tsx +++ b/src/modules/core/components/DownloadStateIndicator.tsx @@ -10,9 +10,9 @@ import CircularProgress from '@mui/material/CircularProgress'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import { useTranslation } from 'react-i18next'; -import { TranslationKey } from '@/typings'; import { DownloadState } from '@/lib/graphql/generated/graphql.ts'; import { ChapterDownloadStatus } from '@/lib/data/Chapters.ts'; +import { TranslationKey } from '@/Base.types.ts'; const DOWNLOAD_STATE_TO_TRANSLATION_KEY_MAP: { [state in DownloadState]: TranslationKey } = { DOWNLOADING: 'download.state.label.downloading', diff --git a/src/util/ErrorBoundary.tsx b/src/modules/core/components/ErrorBoundary.tsx similarity index 100% rename from src/util/ErrorBoundary.tsx rename to src/modules/core/components/ErrorBoundary.tsx diff --git a/src/components/util/ListItemLink.tsx b/src/modules/core/components/ListItemLink.tsx similarity index 100% rename from src/components/util/ListItemLink.tsx rename to src/modules/core/components/ListItemLink.tsx diff --git a/src/components/atoms/Metadata.tsx b/src/modules/core/components/Metadata.tsx similarity index 100% rename from src/components/atoms/Metadata.tsx rename to src/modules/core/components/Metadata.tsx diff --git a/src/components/molecules/OptionsPanel.tsx b/src/modules/core/components/OptionsPanel.tsx similarity index 100% rename from src/components/molecules/OptionsPanel.tsx rename to src/modules/core/components/OptionsPanel.tsx diff --git a/src/components/molecules/OptionsTabs.tsx b/src/modules/core/components/OptionsTabs.tsx similarity index 91% rename from src/components/molecules/OptionsTabs.tsx rename to src/modules/core/components/OptionsTabs.tsx index c1f8f702..13f1fdaf 100644 --- a/src/components/molecules/OptionsTabs.tsx +++ b/src/modules/core/components/OptionsTabs.tsx @@ -10,8 +10,8 @@ import Stack from '@mui/material/Stack'; import Tab from '@mui/material/Tab'; import Tabs from '@mui/material/Tabs'; import React, { useState } from 'react'; -import { TabPanel } from '@/components/tabs/TabPanel.tsx'; -import { OptionsPanel } from '@/components/molecules/OptionsPanel'; +import { TabPanel } from '@/modules/core/components/tabs/TabPanel.tsx'; +import { OptionsPanel } from '@/modules/core/components/OptionsPanel.tsx'; interface IProps { open: boolean; diff --git a/src/components/util/Progress.tsx b/src/modules/core/components/Progress.tsx similarity index 100% rename from src/components/util/Progress.tsx rename to src/modules/core/components/Progress.tsx diff --git a/src/components/util/SpinnerImage.tsx b/src/modules/core/components/SpinnerImage.tsx similarity index 98% rename from src/components/util/SpinnerImage.tsx rename to src/modules/core/components/SpinnerImage.tsx index b109eb35..7dd6a3d4 100644 --- a/src/components/util/SpinnerImage.tsx +++ b/src/modules/core/components/SpinnerImage.tsx @@ -16,7 +16,7 @@ import RefreshIcon from '@mui/icons-material/Refresh'; import { useTranslation } from 'react-i18next'; import ImageIcon from '@mui/icons-material/Image'; import { SxProps, Theme } from '@mui/material/styles'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { Priority } from '@/lib/Queue.ts'; interface IProps { diff --git a/src/lib/StrictModeDroppable.tsx b/src/modules/core/components/StrictModeDroppable.tsx similarity index 100% rename from src/lib/StrictModeDroppable.tsx rename to src/modules/core/components/StrictModeDroppable.tsx diff --git a/src/components/atoms/TypographyMaxLines.tsx b/src/modules/core/components/TypographyMaxLines.tsx similarity index 91% rename from src/components/atoms/TypographyMaxLines.tsx rename to src/modules/core/components/TypographyMaxLines.tsx index dbbf010d..f40b5690 100644 --- a/src/components/atoms/TypographyMaxLines.tsx +++ b/src/modules/core/components/TypographyMaxLines.tsx @@ -8,7 +8,7 @@ import styled from '@emotion/styled'; import Typography, { TypographyProps } from '@mui/material/Typography'; -import { shouldForwardProp } from '@/lib/ui/ShouldForwardProp.ts'; +import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; type TypographyMaxLinesProps = { lines?: number; diff --git a/src/components/library/UpdateChecker.tsx b/src/modules/core/components/UpdateChecker.tsx similarity index 95% rename from src/components/library/UpdateChecker.tsx rename to src/modules/core/components/UpdateChecker.tsx index e974ebd2..2463d191 100644 --- a/src/components/library/UpdateChecker.tsx +++ b/src/modules/core/components/UpdateChecker.tsx @@ -16,12 +16,12 @@ import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import ClearIcon from '@mui/icons-material/Clear'; import Stack from '@mui/material/Stack'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { UpdaterSubscription } from '@/lib/graphql/generated/graphql.ts'; -import { Progress } from '@/components/util/Progress'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { dateTimeFormatter } from '@/util/date.ts'; +import { Progress } from '@/modules/core/components/Progress.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; +import { dateTimeFormatter } from '@/util/DateHelper.ts'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { CategoryIdInfo } from '@/lib/data/Categories.ts'; diff --git a/src/components/atoms/CustomIconButton.tsx b/src/modules/core/components/buttons/CustomIconButton.tsx similarity index 100% rename from src/components/atoms/CustomIconButton.tsx rename to src/modules/core/components/buttons/CustomIconButton.tsx diff --git a/src/components/util/StyledFab.tsx b/src/modules/core/components/buttons/StyledFab.tsx similarity index 100% rename from src/components/util/StyledFab.tsx rename to src/modules/core/components/buttons/StyledFab.tsx diff --git a/src/components/settings/globalUpdate/CheckboxContainer.ts b/src/modules/core/components/inputs/CheckboxContainer.ts similarity index 100% rename from src/components/settings/globalUpdate/CheckboxContainer.ts rename to src/modules/core/components/inputs/CheckboxContainer.ts diff --git a/src/components/atoms/CheckboxInput.tsx b/src/modules/core/components/inputs/CheckboxInput.tsx similarity index 100% rename from src/components/atoms/CheckboxInput.tsx rename to src/modules/core/components/inputs/CheckboxInput.tsx diff --git a/src/components/navbar/action/LangSelect.tsx b/src/modules/core/components/inputs/LangSelect.tsx similarity index 98% rename from src/components/navbar/action/LangSelect.tsx rename to src/modules/core/components/inputs/LangSelect.tsx index e49355d1..d013e8c3 100644 --- a/src/components/navbar/action/LangSelect.tsx +++ b/src/modules/core/components/inputs/LangSelect.tsx @@ -20,8 +20,8 @@ import ListItemText from '@mui/material/ListItemText'; import Tooltip from '@mui/material/Tooltip'; import ListItem from '@mui/material/ListItem'; import { useTranslation } from 'react-i18next'; -import { cloneObject } from '@/util/cloneObject'; -import { translateExtensionLanguage } from '@/screens/util/Extensions'; +import { cloneObject } from '@/util/cloneObject.tsx'; +import { translateExtensionLanguage } from '@/screens/util/Extensions.ts'; function removeAll(firstList: any[], secondList: any[]) { secondList.forEach((item) => { diff --git a/src/components/atoms/PasswordTextField.tsx b/src/modules/core/components/inputs/PasswordTextField.tsx similarity index 100% rename from src/components/atoms/PasswordTextField.tsx rename to src/modules/core/components/inputs/PasswordTextField.tsx diff --git a/src/components/atoms/RadioInput.tsx b/src/modules/core/components/inputs/RadioInput.tsx similarity index 100% rename from src/components/atoms/RadioInput.tsx rename to src/modules/core/components/inputs/RadioInput.tsx diff --git a/src/components/atoms/SearchTextField.tsx b/src/modules/core/components/inputs/SearchTextField.tsx similarity index 100% rename from src/components/atoms/SearchTextField.tsx rename to src/modules/core/components/inputs/SearchTextField.tsx diff --git a/src/components/atoms/Select.tsx b/src/modules/core/components/inputs/Select.tsx similarity index 100% rename from src/components/atoms/Select.tsx rename to src/modules/core/components/inputs/Select.tsx diff --git a/src/components/atoms/SortRadioInput.tsx b/src/modules/core/components/inputs/SortRadioInput.tsx similarity index 88% rename from src/components/atoms/SortRadioInput.tsx rename to src/modules/core/components/inputs/SortRadioInput.tsx index e5c79e25..392d9e66 100644 --- a/src/components/atoms/SortRadioInput.tsx +++ b/src/modules/core/components/inputs/SortRadioInput.tsx @@ -9,7 +9,7 @@ import ArrowDownward from '@mui/icons-material/ArrowDownward'; import ArrowUpward from '@mui/icons-material/ArrowUpward'; import { memo } from 'react'; -import { RadioInput, RadioInputProps } from '@/components/atoms/RadioInput'; +import { RadioInput, RadioInputProps } from '@/modules/core/components/inputs/RadioInput.tsx'; interface IProps extends RadioInputProps { sortDescending?: boolean | null | undefined; diff --git a/src/components/atoms/ThreeStateCheckbox.tsx b/src/modules/core/components/inputs/ThreeStateCheckbox.tsx similarity index 100% rename from src/components/atoms/ThreeStateCheckbox.tsx rename to src/modules/core/components/inputs/ThreeStateCheckbox.tsx diff --git a/src/components/atoms/ThreeStateCheckboxInput.tsx b/src/modules/core/components/inputs/ThreeStateCheckboxInput.tsx similarity index 83% rename from src/components/atoms/ThreeStateCheckboxInput.tsx rename to src/modules/core/components/inputs/ThreeStateCheckboxInput.tsx index d11bba62..7a0d0224 100644 --- a/src/components/atoms/ThreeStateCheckboxInput.tsx +++ b/src/modules/core/components/inputs/ThreeStateCheckboxInput.tsx @@ -8,7 +8,7 @@ import FormControlLabel from '@mui/material/FormControlLabel'; import React from 'react'; -import { ThreeStateCheckbox, ThreeStateCheckboxProps } from '@/components/atoms/ThreeStateCheckbox'; +import { ThreeStateCheckbox, ThreeStateCheckboxProps } from '@/modules/core/components/inputs/ThreeStateCheckbox.tsx'; interface IProps extends ThreeStateCheckboxProps { label?: string; diff --git a/src/components/menu/IconMenuItem.tsx b/src/modules/core/components/menu/IconMenuItem.tsx similarity index 100% rename from src/components/menu/IconMenuItem.tsx rename to src/modules/core/components/menu/IconMenuItem.tsx diff --git a/src/components/menu/Menu.tsx b/src/modules/core/components/menu/Menu.tsx similarity index 100% rename from src/components/menu/Menu.tsx rename to src/modules/core/components/menu/Menu.tsx diff --git a/src/components/menu/util.ts b/src/modules/core/components/menu/Menu.utils.ts similarity index 96% rename from src/components/menu/util.ts rename to src/modules/core/components/menu/Menu.utils.ts index 567265a1..5e8afbab 100644 --- a/src/components/menu/util.ts +++ b/src/modules/core/components/menu/Menu.utils.ts @@ -7,7 +7,8 @@ */ import { t as translate } from 'i18next'; -import { TranslationKey } from '@/typings.ts'; + +import { TranslationKey } from '@/Base.types.ts'; export const createGetMenuItemTitle = ( diff --git a/src/components/menu/MenuItem.tsx b/src/modules/core/components/menu/MenuItem.tsx similarity index 100% rename from src/components/menu/MenuItem.tsx rename to src/modules/core/components/menu/MenuItem.tsx diff --git a/src/components/menu/NestedMenuItem.tsx b/src/modules/core/components/menu/NestedMenuItem.tsx similarity index 98% rename from src/components/menu/NestedMenuItem.tsx rename to src/modules/core/components/menu/NestedMenuItem.tsx index 1811a59b..8d313b95 100644 --- a/src/components/menu/NestedMenuItem.tsx +++ b/src/modules/core/components/menu/NestedMenuItem.tsx @@ -34,7 +34,7 @@ import Box from '@mui/material/Box'; import { OverridableComponent } from '@mui/material/OverridableComponent'; import { SvgIconTypeMap } from '@mui/material/SvgIcon'; -import { IconMenuItem } from '@/components/menu/IconMenuItem.tsx'; +import { IconMenuItem } from '@/modules/core/components/menu/IconMenuItem.tsx'; import { getOptionForDirection } from '@/theme.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; diff --git a/src/components/util/EmptyView.tsx b/src/modules/core/components/placeholder/EmptyView.tsx similarity index 100% rename from src/components/util/EmptyView.tsx rename to src/modules/core/components/placeholder/EmptyView.tsx diff --git a/src/components/util/EmptyViewAbsoluteCentered.tsx b/src/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx similarity index 87% rename from src/components/util/EmptyViewAbsoluteCentered.tsx rename to src/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx index 2f82bc47..88abbaee 100644 --- a/src/components/util/EmptyViewAbsoluteCentered.tsx +++ b/src/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { EmptyView, EmptyViewProps } from '@/components/util/EmptyView.tsx'; +import { EmptyView, EmptyViewProps } from '@/modules/core/components/placeholder/EmptyView.tsx'; export function EmptyViewAbsoluteCentered({ sx, ...emptyViewProps }: EmptyViewProps) { return ( diff --git a/src/components/util/LoadingPlaceholder.tsx b/src/modules/core/components/placeholder/LoadingPlaceholder.tsx similarity index 100% rename from src/components/util/LoadingPlaceholder.tsx rename to src/modules/core/components/placeholder/LoadingPlaceholder.tsx diff --git a/src/components/settings/DateSetting.tsx b/src/modules/core/components/settings/DateSetting.tsx similarity index 100% rename from src/components/settings/DateSetting.tsx rename to src/modules/core/components/settings/DateSetting.tsx diff --git a/src/components/settings/MutableListSetting.tsx b/src/modules/core/components/settings/MutableListSetting.tsx similarity index 97% rename from src/components/settings/MutableListSetting.tsx rename to src/modules/core/components/settings/MutableListSetting.tsx index e306d876..b5d9863c 100644 --- a/src/components/settings/MutableListSetting.tsx +++ b/src/modules/core/components/settings/MutableListSetting.tsx @@ -24,9 +24,9 @@ import DeleteIcon from '@mui/icons-material/Delete'; import IconButton from '@mui/material/IconButton'; import DialogContentText from '@mui/material/DialogContentText'; import InfoIcon from '@mui/icons-material/Info'; -import { TextSetting, TextSettingProps } from '@/components/settings/text/TextSetting.tsx'; -import { TextSettingDialog } from '@/components/settings/text/TextSettingDialog.tsx'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { TextSetting, TextSettingProps } from '@/modules/core/components/settings/text/TextSetting.tsx'; +import { TextSettingDialog } from '@/modules/core/components/settings/text/TextSettingDialog.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; const MutableListItem = ({ handleDelete, diff --git a/src/components/settings/NumberSetting.tsx b/src/modules/core/components/settings/NumberSetting.tsx similarity index 100% rename from src/components/settings/NumberSetting.tsx rename to src/modules/core/components/settings/NumberSetting.tsx diff --git a/src/components/settings/SelectSetting.tsx b/src/modules/core/components/settings/SelectSetting.tsx similarity index 98% rename from src/components/settings/SelectSetting.tsx rename to src/modules/core/components/settings/SelectSetting.tsx index 7a482f64..1ef851fe 100644 --- a/src/components/settings/SelectSetting.tsx +++ b/src/modules/core/components/settings/SelectSetting.tsx @@ -21,8 +21,8 @@ import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import DialogContentText from '@mui/material/DialogContentText'; import InfoIcon from '@mui/icons-material/Info'; -import { TranslationKey } from '@/typings.ts'; -import { Select } from '@/components/atoms/Select.tsx'; +import { Select } from '@/modules/core/components/inputs/Select.tsx'; +import { TranslationKey } from '@/Base.types.ts'; export type SelectSettingValueDisplayInfo = { text: TranslationKey | string; diff --git a/src/components/settings/TimeSetting.tsx b/src/modules/core/components/settings/TimeSetting.tsx similarity index 100% rename from src/components/settings/TimeSetting.tsx rename to src/modules/core/components/settings/TimeSetting.tsx diff --git a/src/components/settings/text/TextSetting.tsx b/src/modules/core/components/settings/text/TextSetting.tsx similarity index 91% rename from src/components/settings/text/TextSetting.tsx rename to src/modules/core/components/settings/text/TextSetting.tsx index 1fcb59fe..81fd2a85 100644 --- a/src/components/settings/text/TextSetting.tsx +++ b/src/modules/core/components/settings/text/TextSetting.tsx @@ -9,7 +9,10 @@ import ListItemText from '@mui/material/ListItemText'; import ListItemButton from '@mui/material/ListItemButton'; import { useState } from 'react'; -import { TextSettingDialog, TextSettingDialogProps } from '@/components/settings/text/TextSettingDialog.tsx'; +import { + TextSettingDialog, + TextSettingDialogProps, +} from '@/modules/core/components/settings/text/TextSettingDialog.tsx'; export type TextSettingProps = Omit & Required> & { diff --git a/src/components/settings/text/TextSettingDialog.tsx b/src/modules/core/components/settings/text/TextSettingDialog.tsx similarity index 97% rename from src/components/settings/text/TextSettingDialog.tsx rename to src/modules/core/components/settings/text/TextSettingDialog.tsx index a727a9df..9640f24c 100644 --- a/src/components/settings/text/TextSettingDialog.tsx +++ b/src/modules/core/components/settings/text/TextSettingDialog.tsx @@ -15,7 +15,7 @@ import TextField from '@mui/material/TextField'; import DialogActions from '@mui/material/DialogActions'; import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { PasswordTextField } from '@/components/atoms/PasswordTextField.tsx'; +import { PasswordTextField } from '@/modules/core/components/inputs/PasswordTextField.tsx'; export type TextSettingDialogProps = { settingName: string; diff --git a/src/components/tabs/TabPanel.tsx b/src/modules/core/components/tabs/TabPanel.tsx similarity index 100% rename from src/components/tabs/TabPanel.tsx rename to src/modules/core/components/tabs/TabPanel.tsx diff --git a/src/components/tabs/TabsMenu.tsx b/src/modules/core/components/tabs/TabsMenu.tsx similarity index 100% rename from src/components/tabs/TabsMenu.tsx rename to src/modules/core/components/tabs/TabsMenu.tsx diff --git a/src/components/tabs/TabsWrapper.tsx b/src/modules/core/components/tabs/TabsWrapper.tsx similarity index 100% rename from src/components/tabs/TabsWrapper.tsx rename to src/modules/core/components/tabs/TabsWrapper.tsx diff --git a/src/components/virtuoso/StyledGroupHeader.tsx b/src/modules/core/components/virtuoso/StyledGroupHeader.tsx similarity index 85% rename from src/components/virtuoso/StyledGroupHeader.tsx rename to src/modules/core/components/virtuoso/StyledGroupHeader.tsx index 6aec5c86..3bea7650 100644 --- a/src/components/virtuoso/StyledGroupHeader.tsx +++ b/src/modules/core/components/virtuoso/StyledGroupHeader.tsx @@ -8,7 +8,7 @@ import { styled } from '@mui/material/styles'; import Typography, { TypographyProps } from '@mui/material/Typography'; -import { shouldForwardProp } from '@/lib/ui/ShouldForwardProp.ts'; +import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts'; type StyledGroupHeaderProps = { isFirstItem: boolean; @@ -17,13 +17,11 @@ export const StyledGroupHeader = styled(Typography, { shouldForwardProp: shouldForwardProp(['isFirstItem']), })(({ theme, isFirstItem }) => ({ paddingLeft: theme.spacing(3), - // 16px - 10px (bottom padding of the group items) paddingTop: theme.spacing(0.75), paddingBottom: theme.spacing(2), fontWeight: 'bold', backgroundColor: theme.palette.background.default, [theme.breakpoints.down('sm')]: { - // 16px - 8px (margin of header) paddingTop: isFirstItem ? theme.spacing(1) : theme.spacing(0.75), }, })); diff --git a/src/components/virtuoso/StyledGroupItemWrapper.tsx b/src/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx similarity index 100% rename from src/components/virtuoso/StyledGroupItemWrapper.tsx rename to src/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx diff --git a/src/components/virtuoso/StyledGroupedVirtuoso.tsx b/src/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx similarity index 100% rename from src/components/virtuoso/StyledGroupedVirtuoso.tsx rename to src/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx diff --git a/src/components/context/AppContext.tsx b/src/modules/core/contexts/AppContext.tsx similarity index 97% rename from src/components/context/AppContext.tsx rename to src/modules/core/contexts/AppContext.tsx index c0748731..d9f8691a 100644 --- a/src/components/context/AppContext.tsx +++ b/src/modules/core/contexts/AppContext.tsx @@ -18,10 +18,10 @@ import { prefixer } from 'stylis'; import rtlPlugin from 'stylis-plugin-rtl'; import { SnackbarProvider } from 'notistack'; import { createAndSetTheme } from '@/theme.tsx'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { ThemeMode, ThemeModeContext } from '@/components/context/ThemeModeContext.tsx'; -import { NavBarContextProvider } from '@/components/navbar/NavBarContextProvider'; -import { LibraryOptionsContextProvider } from '@/components/library/LibraryOptionsProvider'; +import { NavBarContextProvider } from '@/components/navbar/NavBarContextProvider.tsx'; +import { LibraryOptionsContextProvider } from '@/components/library/LibraryOptionsProvider.tsx'; import { ActiveDevice, DEFAULT_DEVICE, setActiveDevice } from '@/util/device.ts'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { AppThemes, getTheme } from '@/lib/ui/AppThemes.ts'; diff --git a/src/util/useBackButton.ts b/src/modules/core/hooks/useBackButton.ts similarity index 100% rename from src/util/useBackButton.ts rename to src/modules/core/hooks/useBackButton.ts diff --git a/src/util/useDebounce.ts b/src/modules/core/hooks/useDebounce.ts similarity index 100% rename from src/util/useDebounce.ts rename to src/modules/core/hooks/useDebounce.ts diff --git a/src/util/useHistory.ts b/src/modules/core/hooks/useHistory.ts similarity index 100% rename from src/util/useHistory.ts rename to src/modules/core/hooks/useHistory.ts diff --git a/src/util/usePersistedValue.tsx b/src/modules/core/hooks/usePersistedValue.tsx similarity index 92% rename from src/util/usePersistedValue.tsx rename to src/modules/core/hooks/usePersistedValue.tsx index 4c96eb01..b99fc2ba 100644 --- a/src/util/usePersistedValue.tsx +++ b/src/modules/core/hooks/usePersistedValue.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; export const getPersistedServerSetting = (serverValue: T | undefined, lastValue: T): T => { const isDisabled = serverValue === 0; diff --git a/src/util/useResizeObserver.tsx b/src/modules/core/hooks/useResizeObserver.tsx similarity index 100% rename from src/util/useResizeObserver.tsx rename to src/modules/core/hooks/useResizeObserver.tsx diff --git a/src/util/useStorage.tsx b/src/modules/core/hooks/useStorage.tsx similarity index 98% rename from src/util/useStorage.tsx rename to src/modules/core/hooks/useStorage.tsx index 3dae3944..744a2ea3 100644 --- a/src/util/useStorage.tsx +++ b/src/modules/core/hooks/useStorage.tsx @@ -7,7 +7,7 @@ */ import { Dispatch, Reducer, SetStateAction, useCallback, useMemo, useReducer, useSyncExternalStore } from 'react'; -import { AppStorage, Storage } from '@/util/AppStorage.ts'; +import { AppStorage, Storage } from '@/lib/AppStorage.ts'; const subscribeToStorageUpdates = (callback: () => void) => { window.addEventListener('storage', callback); diff --git a/src/util/LazyLoad.tsx b/src/modules/core/utils/LazyLoad.tsx similarity index 77% rename from src/util/LazyLoad.tsx rename to src/modules/core/utils/LazyLoad.tsx index 72fe1fd9..f222c030 100644 --- a/src/util/LazyLoad.tsx +++ b/src/modules/core/utils/LazyLoad.tsx @@ -6,6 +6,6 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; export const lazyLoadFallback = { fallback: }; diff --git a/src/lib/ui/ShouldForwardProp.ts b/src/modules/core/utils/ShouldForwardProp.ts similarity index 100% rename from src/lib/ui/ShouldForwardProp.ts rename to src/modules/core/utils/ShouldForwardProp.ts diff --git a/src/screens/Browse.tsx b/src/screens/Browse.tsx index bcf40f00..f4e7eac8 100644 --- a/src/screens/Browse.tsx +++ b/src/screens/Browse.tsx @@ -12,12 +12,12 @@ import { useTranslation } from 'react-i18next'; import { StringParam, useQueryParam } from 'use-query-params'; import { Sources } from '@/screens/Sources'; import { Extensions } from '@/screens/Extensions'; -import { TabPanel } from '@/components/tabs/TabPanel.tsx'; -import { TabsWrapper } from '@/components/tabs/TabsWrapper.tsx'; -import { TabsMenu } from '@/components/tabs/TabsMenu.tsx'; +import { TabPanel } from '@/modules/core/components/tabs/TabPanel.tsx'; +import { TabsWrapper } from '@/modules/core/components/tabs/TabsWrapper.tsx'; +import { TabsMenu } from '@/modules/core/components/tabs/TabsMenu.tsx'; import { Migration } from '@/screens/Migration.tsx'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { useResizeObserver } from '@/util/useResizeObserver.tsx'; +import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; enum Tabs { SOURCE = 'source', diff --git a/src/screens/DownloadQueue.tsx b/src/screens/DownloadQueue.tsx index 0e4ed53a..c1977d22 100644 --- a/src/screens/DownloadQueue.tsx +++ b/src/screens/DownloadQueue.tsx @@ -25,14 +25,14 @@ import DeleteSweepIcon from '@mui/icons-material/DeleteSweep'; import { Virtuoso } from 'react-virtuoso'; import CardContent from '@mui/material/CardContent'; import Refresh from '@mui/icons-material/Refresh'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { StrictModeDroppable } from '@/lib/StrictModeDroppable'; -import { makeToast } from '@/components/util/Toast'; -import { DownloadStateIndicator } from '@/components/molecules/DownloadStateIndicator'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { StrictModeDroppable } from '@/modules/core/components/StrictModeDroppable.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { DownloadStateIndicator } from '@/modules/core/components/DownloadStateIndicator.tsx'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { ChapterDownloadStatus, ChapterIdInfo } from '@/lib/data/Chapters.ts'; import { DownloadState } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/screens/Extensions.tsx b/src/screens/Extensions.tsx index b09bdf3f..92413f1b 100644 --- a/src/screens/Extensions.tsx +++ b/src/screens/Extensions.tsx @@ -17,9 +17,9 @@ import Tooltip from '@mui/material/Tooltip'; import Typography from '@mui/material/Typography'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { extensionDefaultLangs, DefaultLanguage, langSortCmp } from '@/util/language'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { extensionDefaultLangs, DefaultLanguage, langSortCmp } from '@/lib/Languages.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { ExtensionState, GroupedExtensions, @@ -28,17 +28,17 @@ import { TExtension, translateExtensionLanguage, } from '@/screens/util/Extensions'; -import { AppbarSearch } from '@/components/util/AppbarSearch'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder'; -import { makeToast } from '@/components/util/Toast'; -import { LangSelect } from '@/components/navbar/action/LangSelect'; +import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { LangSelect } from '@/modules/core/components/inputs/LangSelect.tsx'; import { ExtensionCard } from '@/components/ExtensionCard'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { StyledGroupedVirtuoso } from '@/components/virtuoso/StyledGroupedVirtuoso.tsx'; -import { StyledGroupHeader } from '@/components/virtuoso/StyledGroupHeader.tsx'; -import { StyledGroupItemWrapper } from '@/components/virtuoso/StyledGroupItemWrapper.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +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 { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; const LANGUAGE = 0; const EXTENSIONS = 1; diff --git a/src/screens/Library.tsx b/src/screens/Library.tsx index c3b30088..90e88add 100644 --- a/src/screens/Library.tsx +++ b/src/screens/Library.tsx @@ -12,23 +12,23 @@ import { styled } from '@mui/material/styles'; import { useCallback, useContext, useLayoutEffect, useMemo, useState } from 'react'; import { useQueryParam, NumberParam } from 'use-query-params'; import { useTranslation } from 'react-i18next'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder'; -import { TabPanel } from '@/components/tabs/TabPanel.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { TabPanel } from '@/modules/core/components/tabs/TabPanel.tsx'; import { LibraryToolbarMenu } from '@/components/library/LibraryToolbarMenu'; import { LibraryMangaGrid } from '@/components/library/LibraryMangaGrid'; -import { AppbarSearch } from '@/components/util/AppbarSearch'; -import { UpdateChecker } from '@/components/library/UpdateChecker'; +import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx'; +import { UpdateChecker } from '@/modules/core/components/UpdateChecker.tsx'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { useSelectableCollection } from '@/components/collection/useSelectableCollection.ts'; 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 { TabsMenu } from '@/components/tabs/TabsMenu.tsx'; -import { TabsWrapper } from '@/components/tabs/TabsWrapper.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { TabsMenu } from '@/modules/core/components/tabs/TabsMenu.tsx'; +import { TabsWrapper } from '@/modules/core/components/tabs/TabsWrapper.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetCategoriesLibraryQuery, GetCategoriesLibraryQueryVariables, diff --git a/src/screens/Manga.tsx b/src/screens/Manga.tsx index 8fb6c6a1..faa9f3bd 100644 --- a/src/screens/Manga.tsx +++ b/src/screens/Manga.tsx @@ -16,14 +16,14 @@ import React, { useContext, useEffect, useLayoutEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; import { isNetworkRequestInFlight } from '@apollo/client/core/networkStatus'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { NavBarContext } from '@/components/context/NavbarContext'; import { ChapterList } from '@/components/chapter/ChapterList.tsx'; import { useRefreshManga } from '@/components/manga/useRefreshManga.ts'; import { MangaDetails } from '@/components/manga/MangaDetails'; import { MangaToolbarMenu } from '@/components/manga/MangaToolbarMenu'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder'; +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'; import { GET_MANGA_SCREEN } from '@/lib/graphql/queries/MangaQuery.ts'; diff --git a/src/screens/Migrate.tsx b/src/screens/Migrate.tsx index c4160244..b06caddd 100644 --- a/src/screens/Migrate.tsx +++ b/src/screens/Migrate.tsx @@ -10,14 +10,14 @@ import { useContext, useEffect, useLayoutEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { TMigratableSource } from '@/components/MigrationCard.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { GridLayouts } from '@/components/source/GridLayouts.tsx'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { GridLayout } from '@/components/context/LibraryOptionsContext.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GetSourceMigratableQuery, GetSourceMigratableQueryVariables } from '@/lib/graphql/generated/graphql.ts'; import { GET_SOURCE_MIGRATABLE } from '@/lib/graphql/queries/SourceQuery.ts'; import { SOURCE_BASE_FIELDS } from '@/lib/graphql/fragments/SourceFragments.ts'; diff --git a/src/screens/Migration.constants.ts b/src/screens/Migration.constants.ts index 4f3b0402..1eba0316 100644 --- a/src/screens/Migration.constants.ts +++ b/src/screens/Migration.constants.ts @@ -7,7 +7,8 @@ */ import { SortBy, SortOrder } from '@/screens/Migration.types.ts'; -import { TranslationKey } from '@/typings.ts'; + +import { TranslationKey } from '@/Base.types.ts'; export const sortByToTranslationKey: Record = { [SortBy.SOURCE_NAME]: 'migrate.sort.by_source_name', diff --git a/src/screens/Migration.tsx b/src/screens/Migration.tsx index 5405e8c6..d90f6a11 100644 --- a/src/screens/Migration.tsx +++ b/src/screens/Migration.tsx @@ -16,19 +16,19 @@ import TagIcon from '@mui/icons-material/Tag'; import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'; import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'; import Tooltip from '@mui/material/Tooltip'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { MigrationCard, TMigratableSource } from '@/components/MigrationCard.tsx'; -import { StyledGroupItemWrapper } from '@/components/virtuoso/StyledGroupItemWrapper.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { SortBy, SortOrder, SortSettings, TMigratableSourcesResult } from '@/screens/Migration.types.ts'; import { sortByToTranslationKey, sortOrderToTranslationKey } from '@/screens/Migration.constants'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; const getMigratableSources = ( diff --git a/src/screens/Reader.tsx b/src/screens/Reader.tsx index 104034d8..4ae0fa49 100644 --- a/src/screens/Reader.tsx +++ b/src/screens/Reader.tsx @@ -11,8 +11,8 @@ import { useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, u import { useLocation, useNavigate, useParams } from 'react-router-dom'; import Box from '@mui/material/Box'; import { useTranslation } from 'react-i18next'; -import { AllowedMetadataValueTypes, ChapterOffset, IReaderSettings, ReaderType } from '@/typings'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { AllowedMetadataValueTypes, IReaderSettings, ReaderType } from '@/typings'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { checkAndHandleMissingStoredReaderSettings, getReaderSettingsFor, @@ -25,9 +25,9 @@ import { PagedPager } from '@/components/reader/pager/PagedPager'; import { DoublePagedPager } from '@/components/reader/pager/DoublePagedPager'; import { VerticalPager } from '@/components/reader/pager/VerticalPager'; import { ReaderNavBar } from '@/components/navbar/ReaderNavBar'; -import { makeToast } from '@/components/util/Toast'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { useDebounce } from '@/util/useDebounce.ts'; +import { useDebounce } from '@/modules/core/hooks/useDebounce.ts'; import { GetChaptersReaderQuery, GetChaptersReaderQueryVariables, @@ -35,14 +35,15 @@ import { UpdateChapterPatchInput, } from '@/lib/graphql/generated/graphql.ts'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { ChapterIdInfo, Chapters } from '@/lib/data/Chapters.ts'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; +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 { CHAPTER_READER_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; +import { DirectionOffset } from '@/Base.types.ts'; type TChapter = GetChaptersReaderQuery['chapters']['nodes'][number]; @@ -231,7 +232,7 @@ export function Reader() { const prevChapters = useMemo( () => Chapters.getNextChapters(chapter, mangaChapters ?? [], { - offset: ChapterOffset.PREV, + offset: DirectionOffset.PREVIOUS, skipDupe: settings.skipDupChapters, skipDupeChapter: initialChapterRef.current, }), @@ -248,7 +249,7 @@ export function Reader() { const prevChapter = useMemo( () => Chapters.getNextChapter(chapter, mangaChapters ?? [], { - offset: ChapterOffset.PREV, + offset: DirectionOffset.PREVIOUS, skipDupe: settings.skipDupChapters, skipDupeChapter: initialChapterRef.current, }), @@ -365,8 +366,8 @@ export function Reader() { }; const openNextChapter = useCallback( - (offset: ChapterOffset) => { - const isOpenNextChapter = offset === ChapterOffset.NEXT; + (offset: DirectionOffset) => { + const isOpenNextChapter = offset === DirectionOffset.NEXT; const chapterToOpen = isOpenNextChapter ? nextChapter : prevChapter; if (!chapterToOpen) { @@ -481,11 +482,11 @@ export function Reader() { isRead: true, }); - openNextChapter(ChapterOffset.NEXT); + openNextChapter(DirectionOffset.NEXT); }, [chapter.pageCount, openNextChapter, chapter, manga]); const loadPrevChapter = useCallback(() => { - openNextChapter(ChapterOffset.PREV); + openNextChapter(DirectionOffset.PREVIOUS); }, [openNextChapter]); const scrollbarHeight = MediaQuery.useGetScrollbarSize('height'); diff --git a/src/screens/SearchAll.tsx b/src/screens/SearchAll.tsx index 9f745b79..f62fd10a 100644 --- a/src/screens/SearchAll.tsx +++ b/src/screens/SearchAll.tsx @@ -14,21 +14,21 @@ import { Link, useLocation } from 'react-router-dom'; import { StringParam, useQueryParam } from 'use-query-params'; import { useTranslation } from 'react-i18next'; import Box from '@mui/material/Box'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { useLocalStorage } from '@/util/useStorage.tsx'; -import { langSortCmp, sourceDefualtLangs, sourceForcedDefaultLangs } from '@/util/language'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { langSortCmp, sourceDefualtLangs, sourceForcedDefaultLangs } from '@/lib/Languages.tsx'; import { translateExtensionLanguage } from '@/screens/util/Extensions'; -import { AppbarSearch } from '@/components/util/AppbarSearch'; -import { LangSelect } from '@/components/navbar/action/LangSelect'; -import { useDebounce } from '@/util/useDebounce.ts'; +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 { EmptyView } from '@/components/util/EmptyView'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.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'; import { SourceType } from '@/lib/graphql/generated/graphql.ts'; import { BaseMangaGrid } from '@/components/source/BaseMangaGrid.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; type SourceLoadingState = { isLoading: boolean; hasResults: boolean; emptySearch: boolean }; type SourceToLoadingStateMap = Map; diff --git a/src/screens/Settings.tsx b/src/screens/Settings.tsx index 24487308..2a97e800 100644 --- a/src/screens/Settings.tsx +++ b/src/screens/Settings.tsx @@ -25,10 +25,10 @@ import ExploreOutlinedIcon from '@mui/icons-material/ExploreOutlined'; import DevicesIcon from '@mui/icons-material/Devices'; import SyncIcon from '@mui/icons-material/Sync'; import PaletteIcon from '@mui/icons-material/Palette'; -import { ListItemLink } from '@/components/util/ListItemLink'; +import { ListItemLink } from '@/modules/core/components/ListItemLink.tsx'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; export function Settings() { const { t } = useTranslation(); diff --git a/src/screens/SourceConfigure.tsx b/src/screens/SourceConfigure.tsx index 2a41b186..1fe38b26 100644 --- a/src/screens/SourceConfigure.tsx +++ b/src/screens/SourceConfigure.tsx @@ -10,7 +10,7 @@ import { createElement, useContext, useLayoutEffect } from 'react'; import { useParams } from 'react-router-dom'; import List from '@mui/material/List'; import { useTranslation } from 'react-i18next'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { cloneObject } from '@/util/cloneObject'; import { SwitchPreferenceCompat, CheckBoxPreference } from '@/components/sourceConfiguration/TwoStatePreference'; import { ListPreference } from '@/components/sourceConfiguration/ListPreference'; @@ -18,12 +18,12 @@ import { EditTextPreference } from '@/components/sourceConfiguration/EditTextPre import { MultiSelectListPreference } from '@/components/sourceConfiguration/MultiSelectListPreference'; import { PreferenceProps } from '@/typings.ts'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.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 { GetCategoriesSettingsQueryVariables, GetSourceSettingsQuery } from '@/lib/graphql/generated/graphql.ts'; import { GET_SOURCE_SETTINGS } from '@/lib/graphql/queries/SourceQuery.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; function getPrefComponent(type: string) { switch (type) { diff --git a/src/screens/SourceMangas.tsx b/src/screens/SourceMangas.tsx index 24486e45..a270c177 100644 --- a/src/screens/SourceMangas.tsx +++ b/src/screens/SourceMangas.tsx @@ -20,15 +20,15 @@ import { styled } from '@mui/material/styles'; import FavoriteIcon from '@mui/icons-material/Favorite'; import NewReleasesIcon from '@mui/icons-material/NewReleases'; import FilterListIcon from '@mui/icons-material/FilterList'; -import { IPos, TranslationKey } from '@/typings'; +import { IPos } from '@/typings'; import { requestManager, AbortableApolloUseMutationPaginatedResponse, SPECIAL_ED_SOURCES, -} from '@/lib/requests/RequestManager.ts'; +} from '@/lib/requests/requests/RequestManager.ts'; import { GridLayout } from '@/components/context/LibraryOptionsContext'; import { SourceGridLayout } from '@/components/source/SourceGridLayout'; -import { AppbarSearch } from '@/components/util/AppbarSearch'; +import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx'; import { SourceOptions } from '@/components/source/SourceOptions'; import { BaseMangaGrid } from '@/components/source/BaseMangaGrid.tsx'; import { @@ -39,13 +39,14 @@ import { } from '@/lib/graphql/generated/graphql.ts'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; -import { useLocalStorage, useSessionStorage } from '@/util/useStorage.tsx'; -import { AppStorage } from '@/util/AppStorage.ts'; +import { useLocalStorage, useSessionStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { AppStorage } from '@/lib/AppStorage.ts'; import { getGridSnapshotKey } from '@/components/MangaGrid.tsx'; import { createUpdateSourceMetadata, getSourceMetadata } from '@/lib/metadata/sourceMetadata.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +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 { TranslationKey } from '@/Base.types.ts'; const ContentTypeMenu = styled('div')(({ theme }) => ({ display: 'flex', diff --git a/src/screens/Sources.tsx b/src/screens/Sources.tsx index f474d862..54c9df47 100644 --- a/src/screens/Sources.tsx +++ b/src/screens/Sources.tsx @@ -13,16 +13,16 @@ import Typography from '@mui/material/Typography'; import TravelExploreIcon from '@mui/icons-material/TravelExplore'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { useLocalStorage } from '@/util/useStorage.tsx'; -import { sourceDefualtLangs, sourceForcedDefaultLangs, langSortCmp, DefaultLanguage } from '@/util/language'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { sourceDefualtLangs, sourceForcedDefaultLangs, langSortCmp, DefaultLanguage } from '@/lib/Languages.tsx'; import { translateExtensionLanguage } from '@/screens/util/Extensions'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { SourceCard } from '@/components/SourceCard'; -import { LangSelect } from '@/components/navbar/action/LangSelect'; +import { LangSelect } from '@/modules/core/components/inputs/LangSelect.tsx'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { SourceType } from '@/lib/graphql/generated/graphql.ts'; function sourceToLangList(sources: Pick[]) { diff --git a/src/screens/TrackerOAuthLogin.tsx b/src/screens/TrackerOAuthLogin.tsx index d481a263..cfd8ad04 100644 --- a/src/screens/TrackerOAuthLogin.tsx +++ b/src/screens/TrackerOAuthLogin.tsx @@ -9,8 +9,8 @@ import { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; export const TrackerOAuthLogin = () => { const { t } = useTranslation(); diff --git a/src/screens/Updates.tsx b/src/screens/Updates.tsx index c252f491..b0b0bd3e 100644 --- a/src/screens/Updates.tsx +++ b/src/screens/Updates.tsx @@ -19,23 +19,23 @@ import React, { useCallback, useContext, useLayoutEffect, useMemo, useRef, useSt import { Link, useLocation } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import Refresh from '@mui/icons-material/Refresh'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { DownloadStateIndicator } from '@/components/molecules/DownloadStateIndicator'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { DownloadStateIndicator } from '@/modules/core/components/DownloadStateIndicator.tsx'; import { ChapterType, DownloadState } from '@/lib/graphql/generated/graphql.ts'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { UpdateChecker } from '@/components/library/UpdateChecker.tsx'; -import { StyledGroupedVirtuoso } from '@/components/virtuoso/StyledGroupedVirtuoso.tsx'; -import { StyledGroupHeader } from '@/components/virtuoso/StyledGroupHeader.tsx'; -import { StyledGroupItemWrapper } from '@/components/virtuoso/StyledGroupItemWrapper.tsx'; +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 { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; -import { dateTimeFormatter, epochToDate, getDateString } from '@/util/date.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; +import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; +import { dateTimeFormatter, epochToDate, getDateString } from '@/util/DateHelper.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; +import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; import { ChapterIdInfo, ChapterMangaInfo } from '@/lib/data/Chapters.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; const groupByDate = (updates: Pick[]): [date: string, items: number][] => { if (!updates.length) { diff --git a/src/screens/settings/About.tsx b/src/screens/settings/About.tsx index f3179ee4..d752192d 100644 --- a/src/screens/settings/About.tsx +++ b/src/screens/settings/About.tsx @@ -22,14 +22,14 @@ import DownloadIcon from '@mui/icons-material/Download'; import OpenInNewIcon from '@mui/icons-material/OpenInNew'; import { t as translate } from 'i18next'; import DownloadingIcon from '@mui/icons-material/Downloading'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { ListItemLink } from '@/components/util/ListItemLink'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { ListItemLink } from '@/modules/core/components/ListItemLink.tsx'; import { NavBarContext } from '@/components/context/NavbarContext'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { GetAboutQuery, UpdateState } from '@/lib/graphql/generated/graphql.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { epochToDate } from '@/util/date.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { epochToDate } from '@/util/DateHelper.ts'; type AboutServer = GetAboutQuery['aboutServer']; diff --git a/src/screens/settings/Backup.tsx b/src/screens/settings/Backup.tsx index 20436314..60955194 100644 --- a/src/screens/settings/Backup.tsx +++ b/src/screens/settings/Backup.tsx @@ -23,18 +23,18 @@ import Button from '@mui/material/Button'; import ListItem from '@mui/material/ListItem'; import { Link } from 'react-router-dom'; import Stack from '@mui/material/Stack'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { makeToast } from '@/components/util/Toast'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { NavBarContext } from '@/components/context/NavbarContext'; import { BackupRestoreState, ValidateBackupQuery } from '@/lib/graphql/generated/graphql.ts'; -import { Progress } from '@/components/util/Progress.tsx'; -import { TextSetting } from '@/components/settings/text/TextSetting.tsx'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { TimeSetting } from '@/components/settings/TimeSetting.tsx'; +import { Progress } from '@/modules/core/components/Progress.tsx'; +import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { TimeSetting } from '@/modules/core/components/settings/TimeSetting.tsx'; import { ServerSettings } from '@/typings.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.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'; type BackupSettingsType = Pick; diff --git a/src/screens/settings/BrowseSettings.tsx b/src/screens/settings/BrowseSettings.tsx index 5e4e4e6a..7f737257 100644 --- a/src/screens/settings/BrowseSettings.tsx +++ b/src/screens/settings/BrowseSettings.tsx @@ -13,20 +13,20 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { MutableListSetting } from '@/components/settings/MutableListSetting.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx'; import { MetadataBrowseSettings, ServerSettings as GqlServerSettings } from '@/typings.ts'; -import { TextSetting } from '@/components/settings/text/TextSetting.tsx'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +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 { makeToast } from '@/lib/ui/Toast.ts'; type ExtensionsSettings = Pick; diff --git a/src/screens/settings/Categories.tsx b/src/screens/settings/Categories.tsx index e8e6c610..ebd0a960 100644 --- a/src/screens/settings/Categories.tsx +++ b/src/screens/settings/Categories.tsx @@ -30,13 +30,13 @@ import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { StrictModeDroppable } from '@/lib/StrictModeDroppable'; -import { DEFAULT_FULL_FAB_HEIGHT } from '@/components/util/StyledFab'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { StrictModeDroppable } from '@/modules/core/components/StrictModeDroppable.tsx'; +import { DEFAULT_FULL_FAB_HEIGHT } from '@/modules/core/components/buttons/StyledFab.tsx'; import { NavBarContext } from '@/components/context/NavbarContext'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.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 { CategoryType, GetCategoriesSettingsQuery, diff --git a/src/screens/settings/DefaultReaderSettings.tsx b/src/screens/settings/DefaultReaderSettings.tsx index 11ae840d..1a5f9290 100644 --- a/src/screens/settings/DefaultReaderSettings.tsx +++ b/src/screens/settings/DefaultReaderSettings.tsx @@ -16,11 +16,11 @@ import { useDefaultReaderSettings, } from '@/lib/metadata/readerSettings.ts'; import { ReaderSettingsOptions } from '@/components/reader/ReaderSettingsOptions'; -import { makeToast } from '@/components/util/Toast'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { NavBarContext } from '@/components/context/NavbarContext'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; export function DefaultReaderSettings() { const { t } = useTranslation(); diff --git a/src/screens/settings/DownloadSettings.tsx b/src/screens/settings/DownloadSettings.tsx index d1c72677..19aa624e 100644 --- a/src/screens/settings/DownloadSettings.tsx +++ b/src/screens/settings/DownloadSettings.tsx @@ -13,22 +13,22 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import ListSubheader from '@mui/material/ListSubheader'; -import { TextSetting } from '@/components/settings/text/TextSetting.tsx'; +import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { MetadataDownloadSettings, ServerSettings } from '@/typings.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { DownloadAheadSetting } from '@/components/settings/downloads/DownloadAheadSetting.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { DeleteChaptersWhileReadingSetting } from '@/components/settings/downloads/DeleteChaptersWhileReadingSetting.tsx'; import { CategoriesInclusionSetting } from '@/components/settings/CategoriesInclusionSetting.tsx'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +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 { GetCategoriesSettingsQuery, GetCategoriesSettingsQueryVariables } from '@/lib/graphql/generated/graphql.ts'; import { GET_CATEGORIES_SETTINGS } from '@/lib/graphql/queries/CategoryQuery.ts'; diff --git a/src/screens/settings/LibraryDuplicates.tsx b/src/screens/settings/LibraryDuplicates.tsx index b7b7b43c..30699d59 100644 --- a/src/screens/settings/LibraryDuplicates.tsx +++ b/src/screens/settings/LibraryDuplicates.tsx @@ -14,18 +14,18 @@ import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import Box from '@mui/material/Box'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { GridLayout } from '@/components/context/LibraryOptionsContext.tsx'; import { GridLayouts } from '@/components/source/GridLayouts.tsx'; -import { CheckboxInput } from '@/components/atoms/CheckboxInput.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; +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 { StyledGroupedVirtuoso } from '@/components/virtuoso/StyledGroupedVirtuoso.tsx'; -import { StyledGroupHeader } from '@/components/virtuoso/StyledGroupHeader.tsx'; +import { StyledGroupedVirtuoso } from '@/modules/core/components/virtuoso/StyledGroupedVirtuoso.tsx'; +import { StyledGroupHeader } from '@/modules/core/components/virtuoso/StyledGroupHeader.tsx'; import { GetMangasDuplicatesQuery, GetMangasDuplicatesQueryVariables, @@ -34,7 +34,7 @@ import { import { GET_MANGAS_DUPLICATES } from '@/lib/graphql/queries/MangaQuery.ts'; import { BaseMangaGrid } from '@/components/source/BaseMangaGrid.tsx'; import { IMangaGridProps } from '@/components/MangaGrid.tsx'; -import { StyledGroupItemWrapper } from '@/components/virtuoso/StyledGroupItemWrapper.tsx'; +import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; import { enhancedCleanup } from '@/lib/data/Strings.ts'; const findDuplicatesByTitle = >( diff --git a/src/screens/settings/LibrarySettings.tsx b/src/screens/settings/LibrarySettings.tsx index e0dbf45b..a3b0afd3 100644 --- a/src/screens/settings/LibrarySettings.tsx +++ b/src/screens/settings/LibrarySettings.tsx @@ -18,17 +18,17 @@ import { t as translate } from 'i18next'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { GlobalUpdateSettings } from '@/components/settings/globalUpdate/GlobalUpdateSettings.tsx'; import { MetadataLibrarySettings } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { Mangas } from '@/lib/data/Mangas.ts'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { ListItemLink } from '@/components/util/ListItemLink.tsx'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { ListItemLink } from '@/modules/core/components/ListItemLink.tsx'; import { GetCategoriesSettingsQuery, GetCategoriesSettingsQueryVariables, diff --git a/src/screens/settings/ServerSettings.tsx b/src/screens/settings/ServerSettings.tsx index 4ae80113..4219cc00 100644 --- a/src/screens/settings/ServerSettings.tsx +++ b/src/screens/settings/ServerSettings.tsx @@ -16,20 +16,20 @@ import Switch from '@mui/material/Switch'; import ListSubheader from '@mui/material/ListSubheader'; import { t as translate } from 'i18next'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { useLocalStorage } from '@/util/useStorage.tsx'; -import { TextSetting } from '@/components/settings/text/TextSetting.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; +import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; import { MetadataUpdateSettings, ServerSettings as GqlServerSettings } from '@/typings.ts'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { SelectSetting } from '@/components/settings/SelectSetting.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { SelectSetting } from '@/modules/core/components/settings/SelectSetting.tsx'; +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 { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; type ServerSettingsType = Pick< GqlServerSettings, diff --git a/src/screens/settings/TrackingSettings.tsx b/src/screens/settings/TrackingSettings.tsx index 8d244ba1..55f77f0f 100644 --- a/src/screens/settings/TrackingSettings.tsx +++ b/src/screens/settings/TrackingSettings.tsx @@ -15,17 +15,17 @@ import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; +import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { SettingsTrackerCard } from '@/components/tracker/SettingsTrackerCard.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; import { MetadataTrackingSettings } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { GET_TRACKERS_SETTINGS } from '@/lib/graphql/queries/TrackerQuery.ts'; import { GetTrackersSettingsQuery } from '@/lib/graphql/generated/graphql.ts'; diff --git a/src/screens/settings/WebUISettings.tsx b/src/screens/settings/WebUISettings.tsx index c468e4a3..7931945e 100644 --- a/src/screens/settings/WebUISettings.tsx +++ b/src/screens/settings/WebUISettings.tsx @@ -14,23 +14,23 @@ import ListItemText from '@mui/material/ListItemText'; import Switch from '@mui/material/Switch'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { MetadataUpdateSettings, ServerSettings } from '@/typings.ts'; -import { requestManager } from '@/lib/requests/RequestManager.ts'; +import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { WebUIUpdateIntervalSetting } from '@/components/settings/webUI/WebUIUpdateIntervalSetting.tsx'; -import { TextSetting } from '@/components/settings/text/TextSetting.tsx'; +import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; import { SelectSetting, SelectSettingValue, SelectSettingValueDisplayInfo, -} from '@/components/settings/SelectSetting.tsx'; +} from '@/modules/core/components/settings/SelectSetting.tsx'; import { WebUiChannel, WebUiFlavor, WebUiInterface } from '@/lib/graphql/generated/graphql.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.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 { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; type WebUISettingsType = Pick< ServerSettings, diff --git a/src/screens/settings/appearance/Appearance.tsx b/src/screens/settings/appearance/Appearance.tsx index 5df369b1..18142fcd 100644 --- a/src/screens/settings/appearance/Appearance.tsx +++ b/src/screens/settings/appearance/Appearance.tsx @@ -17,23 +17,23 @@ import Switch from '@mui/material/Switch'; import Link from '@mui/material/Link'; import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { ThemeMode, ThemeModeContext } from '@/components/context/ThemeModeContext.tsx'; -import { Select } from '@/components/atoms/Select.tsx'; +import { Select } from '@/modules/core/components/inputs/Select.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; -import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { I18nResourceCode, i18nResources } from '@/i18n'; -import { langCodeToName } from '@/util/language.tsx'; +import { langCodeToName } from '@/lib/Languages.tsx'; import { getTheme } from '@/lib/ui/AppThemes.ts'; import { ThemeList } from '@/screens/settings/appearance/theme/ThemeList.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.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 { MetadataThemeSettings } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; export const Appearance = () => { const { t, i18n } = useTranslation(); diff --git a/src/screens/settings/appearance/theme/CreateThemeButton.tsx b/src/screens/settings/appearance/theme/CreateThemeButton.tsx index fd5db44e..ad0d627f 100644 --- a/src/screens/settings/appearance/theme/CreateThemeButton.tsx +++ b/src/screens/settings/appearance/theme/CreateThemeButton.tsx @@ -13,7 +13,7 @@ import AddCircleIcon from '@mui/icons-material/AddCircle'; import { bindDialog, bindTrigger, usePopupState } from 'material-ui-popup-state/hooks'; import Tooltip from '@mui/material/Tooltip'; import { ThemeCreationDialog } from '@/screens/settings/appearance/theme/CreateThemeDialog.tsx'; -import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; +import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; export const CreateThemeButton = () => { const { t } = useTranslation(); diff --git a/src/screens/settings/appearance/theme/CreateThemeDialog.tsx b/src/screens/settings/appearance/theme/CreateThemeDialog.tsx index cd0d97ef..b1c0f918 100644 --- a/src/screens/settings/appearance/theme/CreateThemeDialog.tsx +++ b/src/screens/settings/appearance/theme/CreateThemeDialog.tsx @@ -19,17 +19,18 @@ import DialogActions from '@mui/material/DialogActions'; import TextField from '@mui/material/TextField'; import Link from '@mui/material/Link'; import { jsonrepair } from 'jsonrepair'; -import { jsonSaveParse } from '@/util/HelperFunctions.ts'; +import { jsonSaveParse } from '@/lib/HelperFunctions.ts'; import { AppTheme, isThemeNameUnique } from '@/lib/ui/AppThemes.ts'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; -import { MetadataThemeSettings, TranslationKey } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { EmptyView } from '@/components/util/EmptyView.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { MetadataThemeSettings } from '@/typings.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { EmptyView } from '@/modules/core/components/placeholder/EmptyView.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; +import { TranslationKey } from '@/Base.types.ts'; const baseCustomTheme: AppTheme = { id: '', diff --git a/src/screens/settings/appearance/theme/ThemeList.tsx b/src/screens/settings/appearance/theme/ThemeList.tsx index ae60dbf1..056fb574 100644 --- a/src/screens/settings/appearance/theme/ThemeList.tsx +++ b/src/screens/settings/appearance/theme/ThemeList.tsx @@ -15,10 +15,10 @@ import { useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; import { MetadataThemeSettings } from '@/typings.ts'; -import { makeToast } from '@/components/util/Toast.tsx'; -import { EmptyView } from '@/components/util/EmptyView.tsx'; -import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { EmptyView } from '@/modules/core/components/placeholder/EmptyView.tsx'; +import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { CreateThemeButton } from '@/screens/settings/appearance/theme/CreateThemeButton.tsx'; import { ThemePreview } from '@/screens/settings/appearance/theme/ThemePreview.tsx'; diff --git a/src/screens/settings/appearance/theme/ThemePreview.tsx b/src/screens/settings/appearance/theme/ThemePreview.tsx index efea6083..e2ababce 100644 --- a/src/screens/settings/appearance/theme/ThemePreview.tsx +++ b/src/screens/settings/appearance/theme/ThemePreview.tsx @@ -23,8 +23,8 @@ import { ThemeModeContext } from '@/components/context/ThemeModeContext.tsx'; import { AppTheme, hasMissingFonts, loadThemeFonts } from '@/lib/ui/AppThemes.ts'; import { createTheme } from '@/theme.tsx'; import { ThemeCreationDialog } from '@/screens/settings/appearance/theme/CreateThemeDialog.tsx'; -import { makeToast } from '@/components/util/Toast'; -import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; +import { makeToast } from '@/lib/ui/Toast.ts'; +import { TypographyMaxLines } from '@/modules/core/components/TypographyMaxLines.tsx'; const ThemePreviewBadge = styled(Box)(() => ({ width: '15px', diff --git a/src/screens/util/Extensions.ts b/src/screens/util/Extensions.ts index 3ded103d..32afaa08 100644 --- a/src/screens/util/Extensions.ts +++ b/src/screens/util/Extensions.ts @@ -7,9 +7,9 @@ */ import { t } from 'i18next'; -import { TranslationKey } from '@/typings'; -import { DefaultLanguage, langCodeToName } from '@/util/language'; +import { DefaultLanguage, langCodeToName } from '@/lib/Languages.tsx'; import { ExtensionType } from '@/lib/graphql/generated/graphql.ts'; +import { TranslationKey } from '@/Base.types.ts'; export enum ExtensionState { INSTALLED = 'INSTALLED', diff --git a/src/theme.tsx b/src/theme.tsx index b4868a66..1d83e6f5 100644 --- a/src/theme.tsx +++ b/src/theme.tsx @@ -20,7 +20,7 @@ import { useCallback } from 'react'; import { ThemeMode } from '@/components/context/ThemeModeContext.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { AppTheme, loadThemeFonts } from '@/lib/ui/AppThemes.ts'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; const SCROLLBAR_SIZE = 14; diff --git a/src/typings.ts b/src/typings.ts index 4fae201c..e0a32068 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -8,8 +8,6 @@ import { OverridableComponent } from '@mui/material/OverridableComponent'; import { SvgIconTypeMap } from '@mui/material/SvgIcon'; -import { ParseKeys } from 'i18next'; -import { Location } from 'react-router-dom'; import { GetChaptersReaderQuery, GetServerSettingsQuery, @@ -23,16 +21,7 @@ import { } from '@/lib/graphql/generated/graphql.ts'; import { AppTheme } from '@/lib/ui/AppThemes.ts'; import { SortSettings } from '@/screens/Migration.types.ts'; - -type GenericLocation = Omit & { state?: State }; - -declare module 'react-router-dom' { - export function useParams(): Params; - - export function useLocation(): GenericLocation; -} - -export type TranslationKey = ParseKeys; +import { NullAndUndefined, TranslationKey } from '@/Base.types.ts'; export interface IPos { type: 'selectState' | 'textState' | 'checkBoxState' | 'triState' | 'sortState'; @@ -125,11 +114,6 @@ export interface IReaderSettings { readerWidth: number; } -export enum ChapterOffset { - PREV = -1, - NEXT = 1, -} - export type MetadataDownloadSettings = { deleteChaptersManuallyMarkedRead: boolean; deleteChaptersWhileReading: number; @@ -243,8 +227,6 @@ export interface NavbarItem { show: 'mobile' | 'desktop' | 'both'; } -export type NullAndUndefined = T | null | undefined; - export type ChapterSortMode = 'fetchedAt' | 'source' | 'chapterNumber' | 'uploadedAt'; export interface ChapterListOptions { diff --git a/src/util/date.ts b/src/util/DateHelper.ts similarity index 100% rename from src/util/date.ts rename to src/util/DateHelper.ts diff --git a/src/util/useUpdateChecker.tsx b/src/util/useUpdateChecker.tsx index 49fa84bc..f9cc9485 100644 --- a/src/util/useUpdateChecker.tsx +++ b/src/util/useUpdateChecker.tsx @@ -7,8 +7,8 @@ */ import { useCallback, useEffect, useMemo } from 'react'; -import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; -import { useLocalStorage } from '@/util/useStorage.tsx'; +import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; +import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; const UPDATE_CHECK_INTERVAL = 1000 * 60 * 60; // 1 hour const UPDATE_REMINDER_THRESHOLD = 1000 * 60 * 60; // 1 hour