diff --git a/src/components/Elements/MainModal/Main.jsx b/src/components/Elements/MainModal/Main.jsx index 71c235f8..6d4cd48c 100644 --- a/src/components/Elements/MainModal/Main.jsx +++ b/src/components/Elements/MainModal/Main.jsx @@ -4,45 +4,24 @@ import { MdClose } from 'react-icons/md'; import './scss/index.scss'; import { Tooltip } from 'components/Elements'; +import ModalLoader from './components/ModalLoader'; +import { TAB_TYPES } from './constants/tabConfig'; + const Settings = lazy(() => import('../../../features/misc/views/Settings')); const Addons = lazy(() => import('../../../features/misc/views/Addons')); const Marketplace = lazy(() => import('../../../features/misc/views/Marketplace')); -const renderLoader = () => ( -
-
- Mue -
-
-
-
-
-
- {variables.getMessage('modals.main.loading')} -
-
-
-
-
-); +// Map tab types to their corresponding components +const TAB_COMPONENTS = { + [TAB_TYPES.SETTINGS]: Settings, + [TAB_TYPES.ADDONS]: Addons, + [TAB_TYPES.MARKETPLACE]: Marketplace, +}; function MainModal({ modalClose }) { - const [currentTab, setCurrentTab] = useState('settings'); + const [currentTab, setCurrentTab] = useState(TAB_TYPES.SETTINGS); - const changeTab = (type) => { - setCurrentTab(type); - }; - - const renderTab = () => { - switch (currentTab) { - case 'addons': - return ; - case 'marketplace': - return ; - default: - return ; - } - }; + const TabComponent = TAB_COMPONENTS[currentTab] || Settings; return (
@@ -55,10 +34,11 @@ function MainModal({ modalClose }) { - {renderTab()} + }> + +
); } -const MemoizedMainModal = memo(MainModal); -export { MemoizedMainModal as default, MemoizedMainModal as MainModal }; +export default memo(MainModal); diff --git a/src/components/Elements/MainModal/backend/Tab.jsx b/src/components/Elements/MainModal/backend/Tab.jsx index e3bfb36f..8108c95c 100644 --- a/src/components/Elements/MainModal/backend/Tab.jsx +++ b/src/components/Elements/MainModal/backend/Tab.jsx @@ -1,62 +1,6 @@ import variables from 'config/variables'; import { memo, useState, useEffect } from 'react'; -import { - MdSettings as Settings, - MdWidgets as Addons, - MdShoppingBasket as Marketplace, - MdMenu as Navbar, - MdEmojiPeople as Greeting, - MdAccessAlarm as Time, - MdOutlineFormatQuote as Quote, - MdLink as QuickLinks, - MdDateRange as Date, - MdOutlineTextsms as Message, - MdOutlinePhoto as Background, - MdSearch, - MdCloudQueue as Weather, - MdFormatPaint as Appearance, - MdTranslate as Language, - MdOutlineSettings as Advanced, - MdBugReport as Experimental, - MdOutlineAssessment as Stats, - MdOutlineNewReleases as Changelog, - MdInfoOutline as About, - MdOutlineExtension as Added, - MdAddCircleOutline as Create, - MdViewAgenda as Overview, - MdCollectionsBookmark as Collections, -} from 'react-icons/md'; - -const iconMapping = { - [variables.getMessage('modals.main.marketplace.product.overview')]: , - [variables.getMessage('modals.main.navbar.settings')]: , - [variables.getMessage('modals.main.navbar.addons')]: , - [variables.getMessage('modals.main.navbar.marketplace')]: , - [variables.getMessage('modals.main.settings.sections.appearance.navbar.title')]: , - [variables.getMessage('modals.main.settings.sections.greeting.title')]: , - [variables.getMessage('modals.main.settings.sections.time.title')]: