From 739b95888b430615f0554ba0bb992cf9681265b6 Mon Sep 17 00:00:00 2001 From: ajnart Date: Fri, 21 Jul 2023 18:08:40 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84=20Prettier=20repository?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- src/components/AppAvatar.test.tsx | 5 +- src/components/Config/ConfigChanger.tsx | 1 + src/components/Config/LoadConfig.tsx | 3 +- .../Dashboard/Mobile/Ribbon/MobileRibbon.tsx | 3 +- .../Ribbon/MobileRibbonSidebarDrawer.tsx | 1 + .../Modals/AboutModal/AboutModal.tsx | 7 +- .../ChangePosition/ChangeAppPositionModal.tsx | 3 +- .../ChangePosition/ChangePositionModal.tsx | 1 + .../ChangeWidgetPositionModal.tsx | 3 +- .../Modals/EditAppModal/EditAppModal.tsx | 1 + .../Tabs/AppereanceTab/AppereanceTab.tsx | 1 + .../Tabs/BehaviourTab/BehaviourTab.tsx | 3 +- .../Tabs/GeneralTab/GeneralTab.tsx | 1 + .../InputElements/GenericSecretInput.tsx | 7 +- .../InputElements/IntegrationSelector.tsx | 7 +- .../IntegrationOptionsRenderer.tsx | 5 +- .../Tabs/IntegrationTab/IntegrationTab.tsx | 1 + .../Tabs/NetworkTab/NetworkTab.tsx | 3 +- .../Overview/AvailableElementsOverview.tsx | 1 + .../Components/Shared/GenericElementType.tsx | 1 + .../AvailableStaticElementsTab.tsx | 1 + .../WidgetsTab/AvailableWidgetsTab.tsx | 1 + .../WidgetsTab/WidgetElementType.tsx | 16 +++-- .../SelectElement/SelectElementModal.tsx | 3 +- .../Dashboard/Tiles/Apps/AppTile.tsx | 1 + .../Dashboard/Tiles/GenericTileMenu.tsx | 1 + .../Dashboard/Tiles/HomarrCardWrapper.tsx | 1 + .../Widgets/Inputs/LocationSelection.tsx | 27 ++++---- .../Widgets/Inputs/StaticDraggableList.tsx | 11 ++-- .../Tiles/Widgets/WidgetsEditModal.tsx | 3 +- .../Dashboard/Tiles/Widgets/WidgetsMenu.tsx | 1 + .../Tiles/Widgets/WidgetsRemoveModal.tsx | 3 +- .../Dashboard/Views/DashboardView.tsx | 1 + .../Dashboard/Views/ViewToggleButton.tsx | 1 + .../Dashboard/Wrappers/Category/Category.tsx | 18 +++-- .../Wrappers/Category/CategoryEditMenu.tsx | 11 ++-- .../Wrappers/Category/CategoryEditModal.tsx | 1 + .../Wrappers/Category/useCategoryActions.tsx | 1 + .../Dashboard/Wrappers/Sidebar/Sidebar.tsx | 3 +- .../Dashboard/Wrappers/Wrapper/Wrapper.tsx | 2 +- .../Dashboard/Wrappers/WrapperContent.tsx | 1 + .../Wrappers/gridstack/init-gridstack.ts | 1 + .../Dashboard/Wrappers/gridstack/store.tsx | 1 + .../Wrappers/gridstack/use-gridstack.ts | 5 +- src/components/IconSelector/IconSelector.tsx | 21 +++--- .../Settings/Common/CacheButtons.tsx | 3 +- .../Settings/Common/CommonSettings.tsx | 3 +- .../Settings/Common/Config/ConfigActions.tsx | 5 +- .../Common/Config/CreateCopyModal.tsx | 7 +- src/components/Settings/Common/Credits.tsx | 1 + .../Common/Language/LanguageSelect.tsx | 8 +-- .../SearchEngine/SearchEngineSelector.tsx | 1 + .../SearchEngine/SearchNewTabSwitch.tsx | 1 + .../Accessibility/AccessibilitySettings.tsx | 5 +- .../Customization/CustomizationAccordeon.tsx | 12 +++- .../Customization/CustomizationSettings.tsx | 1 + .../Layout/GridstackConfiguration.tsx | 1 + .../Customization/Layout/LayoutSelector.tsx | 3 +- .../Customization/Meta/BackgroundChanger.tsx | 1 + .../Customization/Meta/FaviconChanger.tsx | 1 + .../Customization/Meta/LogoImageChanger.tsx | 1 + .../Customization/Meta/MetaTitleChanger.tsx | 1 + .../Customization/Meta/PageTitleChanger.tsx | 1 + .../Customization/Theme/ColorSelector.tsx | 1 + .../Customization/Theme/CustomCssChanger.tsx | 11 ++-- .../Customization/Theme/OpacitySelector.tsx | 1 + .../Customization/Theme/ShadeSelector.tsx | 1 + src/components/layout/Background.tsx | 1 + src/components/layout/Layout.tsx | 1 + src/components/layout/Logo.tsx | 1 + .../AddElementAction/AddElementAction.tsx | 1 + .../Actions/ToggleEditMode/ToggleEditMode.tsx | 4 +- src/components/layout/header/Header.tsx | 3 +- src/components/layout/header/Meta/Head.tsx | 5 +- src/components/layout/header/SettingsMenu.tsx | 1 + .../header/SettingsMenu/EditModeToggle.tsx | 1 + src/components/layout/useCardStyles.ts | 1 + src/components/layout/useGradient.tsx | 1 + src/config/init.ts | 1 + src/config/provider.tsx | 3 +- src/config/store.ts | 1 + src/hooks/widgets/dashDot/api.ts | 1 + src/modules/Docker/ContainerActionBar.tsx | 1 + src/modules/Docker/ContainerState.tsx | 2 +- src/modules/Docker/DockerModule.tsx | 4 +- src/modules/Docker/DockerTable.tsx | 3 +- src/modules/common/MediaDisplay.tsx | 1 + src/modules/overseerr/OverseerrModule.tsx | 3 +- src/modules/overseerr/RequestModal.tsx | 4 +- src/pages/404.tsx | 6 +- src/pages/[slug].tsx | 1 + src/pages/_app.tsx | 22 +++---- src/pages/api/configs/[slug].ts | 7 +- src/pages/api/configs/index.ts | 2 +- src/pages/api/docker/container/[id].tsx | 1 + src/pages/api/docker/containers.tsx | 1 + src/pages/api/icons/index.ts | 1 + src/pages/api/migrate.ts | 3 +- src/pages/api/modules/calendar.ts | 8 +-- src/pages/api/modules/dashdot/info.ts | 1 + src/pages/api/modules/dashdot/storage.ts | 1 + .../api/modules/dns-hole/summary.spec.ts | 4 +- src/pages/api/modules/downloads/index.ts | 13 ++-- .../api/modules/media-requests/index.spec.ts | 4 -- src/pages/api/modules/media-requests/index.ts | 10 +-- src/pages/api/modules/media-server/index.ts | 11 ++-- src/pages/api/modules/overseerr/[id].tsx | 7 +- src/pages/api/modules/overseerr/index.ts | 1 + src/pages/api/modules/ping.ts | 2 +- src/pages/api/modules/rss/index.ts | 4 +- src/pages/api/modules/usenet/history.ts | 5 +- src/pages/api/modules/usenet/index.ts | 5 +- src/pages/api/modules/usenet/pause.ts | 5 +- src/pages/api/modules/usenet/queue.ts | 7 +- src/pages/api/modules/usenet/resume.ts | 5 +- src/pages/api/trpc/[trpc].ts | 2 +- src/pages/login.tsx | 17 ++--- src/pages/migrate.tsx | 14 ++-- src/server/api/root.ts | 9 +-- src/server/api/routers/app.ts | 6 +- src/server/api/routers/calendar.ts | 3 +- src/server/api/routers/config.ts | 9 +-- src/server/api/routers/dash-dot.ts | 3 +- src/server/api/routers/docker/router.ts | 3 +- src/server/api/routers/download.ts | 3 +- src/server/api/routers/icon.ts | 5 +- src/server/api/routers/media-request.ts | 9 +-- src/server/api/routers/media-server.ts | 3 +- src/server/api/routers/overseerr.ts | 7 +- src/server/api/routers/rss.ts | 1 + .../routers/usenet/nzbget/nzbget-client.ts | 1 + src/server/api/routers/usenet/router.ts | 3 +- src/server/api/routers/weather.ts | 1 + src/server/api/trpc.ts | 1 - src/tools/client/app-properties.ts | 4 +- src/tools/client/math.ts | 4 +- src/tools/color.ts | 2 +- src/tools/config/backendMigrateConfig.ts | 1 + src/tools/config/configExists.ts | 1 + src/tools/config/getConfig.ts | 1 + src/tools/config/getFrontendConfig.ts | 3 +- src/tools/config/migrateConfig.ts | 1 - src/tools/config/readConfig.ts | 1 + src/tools/config/writeConfig.ts | 1 + src/tools/getConfig.ts | 5 +- .../server/images/local-icons-repository.ts | 1 + .../server/sdk/adGuard/adGuard.schema.ts | 18 ++--- src/tools/server/sdk/pihole/piHole.spec.ts | 11 +++- src/tools/server/sdk/pihole/piHole.ts | 5 +- src/tools/server/sdk/plex/plexClient.test.ts | 1 - src/tools/server/sdk/plex/plexClient.ts | 9 ++- .../queue/NormalizedDownloadQueueResponse.ts | 1 + src/types/app.ts | 2 +- src/types/config.ts | 8 +-- src/utils/api.ts | 1 - src/widgets/WidgetWrapper.tsx | 1 + src/widgets/bookmark/BookmarkWidgetTile.tsx | 5 +- src/widgets/boundary.tsx | 9 +-- src/widgets/calendar/CalendarDay.tsx | 65 ++++++++++++++----- src/widgets/calendar/CalendarTile.tsx | 25 ++++--- src/widgets/calendar/MediaList.tsx | 3 +- src/widgets/calendar/bg-calculator.ts | 1 + src/widgets/dashDot/DashDotCompactNetwork.tsx | 3 +- src/widgets/dashDot/DashDotCompactStorage.tsx | 1 + src/widgets/dashDot/DashDotGraph.tsx | 1 + src/widgets/dashDot/DashDotTile.tsx | 3 +- src/widgets/date/DateTile.tsx | 1 + src/widgets/dnshole/DnsHoleSummary.tsx | 1 + src/widgets/dnshole/type.ts | 2 +- src/widgets/download-speed/Tile.tsx | 5 +- .../TorrentNetworkTrafficTile.tsx | 2 +- src/widgets/helper.ts | 1 - src/widgets/iframe/IFrameTile.tsx | 3 +- src/widgets/index.ts | 10 +-- src/widgets/loading.tsx | 8 +-- .../media-requests/MediaRequestListTile.tsx | 3 +- .../media-requests/MediaRequestStatsTile.tsx | 1 + .../media-requests/media-request-types.tsx | 2 +- .../media-server/DetailCollapseable.tsx | 1 + src/widgets/media-server/MediaServerTile.tsx | 1 + .../media-server/NowPlayingDisplay.tsx | 3 +- src/widgets/media-server/TableRow.tsx | 3 +- src/widgets/rss/RssWidgetTile.tsx | 2 +- src/widgets/torrent/TorrentQueueItem.tsx | 1 + src/widgets/torrent/TorrentTile.spec.ts | 5 +- src/widgets/torrent/TorrentTile.tsx | 11 +--- src/widgets/useNet/UseNetTile.tsx | 6 +- src/widgets/useNet/UsenetHistoryList.tsx | 1 + src/widgets/video/VideoFeed.tsx | 2 +- src/widgets/video/VideoStreamTile.tsx | 1 + src/widgets/weather/WeatherIcon.tsx | 2 +- src/widgets/weather/WeatherTile.tsx | 1 + src/widgets/widgets.ts | 2 +- tests/setupVitest.ts | 2 +- vitest.config.ts | 1 - yarn.lock | 12 ++-- 197 files changed, 507 insertions(+), 335 deletions(-) diff --git a/package.json b/package.json index ccce3bd2b..49f0b7b82 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "@next/eslint-plugin-next": "^13.4.5", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", - "@trivago/prettier-plugin-sort-imports": "^4.1.1", + "@trivago/prettier-plugin-sort-imports": "^4.2.0", "@types/dockerode": "^3.3.9", "@types/node": "18.16.19", "@types/prismjs": "^1.26.0", @@ -155,6 +155,7 @@ "^[./]" ], "importOrderSeparation": true, + "plugins": ["@trivago/prettier-plugin-sort-imports"], "importOrderSortSpecifiers": true }, "eslintConfig": { diff --git a/src/components/AppAvatar.test.tsx b/src/components/AppAvatar.test.tsx index 6fe1947b0..fc2aec9c5 100644 --- a/src/components/AppAvatar.test.tsx +++ b/src/components/AppAvatar.test.tsx @@ -1,5 +1,6 @@ -import { render, screen, cleanup } from '@testing-library/react'; -import { describe, expect, it, afterEach } from 'vitest'; +import { cleanup, render, screen } from '@testing-library/react'; +import { afterEach, describe, expect, it } from 'vitest'; + import { AppAvatar } from './AppAvatar'; describe('AppAvatar', () => { diff --git a/src/components/Config/ConfigChanger.tsx b/src/components/Config/ConfigChanger.tsx index 19a88b179..8613660ae 100644 --- a/src/components/Config/ConfigChanger.tsx +++ b/src/components/Config/ConfigChanger.tsx @@ -7,6 +7,7 @@ import { useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; import { useState } from 'react'; import { api } from '~/utils/api'; + import { useConfigContext } from '../../config/provider'; export default function ConfigChanger() { diff --git a/src/components/Config/LoadConfig.tsx b/src/components/Config/LoadConfig.tsx index d9c64c558..2d35f65ba 100644 --- a/src/components/Config/LoadConfig.tsx +++ b/src/components/Config/LoadConfig.tsx @@ -5,9 +5,10 @@ import { IconCheck as Check, IconPhoto, IconUpload, IconX, IconX as X } from '@t import { setCookie } from 'cookies-next'; import { useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; +import { api } from '~/utils/api'; + import { useConfigStore } from '../../config/store'; import { ConfigType } from '../../types/config'; -import { api } from '~/utils/api'; export const LoadConfigComponent = () => { const theme = useMantineTheme(); diff --git a/src/components/Dashboard/Mobile/Ribbon/MobileRibbon.tsx b/src/components/Dashboard/Mobile/Ribbon/MobileRibbon.tsx index 0a4589809..1a240a564 100644 --- a/src/components/Dashboard/Mobile/Ribbon/MobileRibbon.tsx +++ b/src/components/Dashboard/Mobile/Ribbon/MobileRibbon.tsx @@ -1,6 +1,7 @@ -import { ActionIcon, createStyles, Space } from '@mantine/core'; +import { ActionIcon, Space, createStyles } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { IconChevronLeft, IconChevronRight } from '@tabler/icons-react'; + import { useConfigContext } from '../../../../config/provider'; import { useScreenLargerThan } from '../../../../hooks/useScreenLargerThan'; import { MobileRibbonSidebarDrawer } from './MobileRibbonSidebarDrawer'; diff --git a/src/components/Dashboard/Mobile/Ribbon/MobileRibbonSidebarDrawer.tsx b/src/components/Dashboard/Mobile/Ribbon/MobileRibbonSidebarDrawer.tsx index 071af487d..fc4a2c153 100644 --- a/src/components/Dashboard/Mobile/Ribbon/MobileRibbonSidebarDrawer.tsx +++ b/src/components/Dashboard/Mobile/Ribbon/MobileRibbonSidebarDrawer.tsx @@ -1,5 +1,6 @@ import { Drawer, Title } from '@mantine/core'; import { useTranslation } from 'next-i18next'; + import { DashboardSidebar } from '../../Wrappers/Sidebar/Sidebar'; interface MobileRibbonSidebarDrawerProps { diff --git a/src/components/Dashboard/Modals/AboutModal/AboutModal.tsx b/src/components/Dashboard/Modals/AboutModal/AboutModal.tsx index 210a1310f..c5c70e641 100644 --- a/src/components/Dashboard/Modals/AboutModal/AboutModal.tsx +++ b/src/components/Dashboard/Modals/AboutModal/AboutModal.tsx @@ -4,7 +4,6 @@ import { Anchor, Badge, Button, - createStyles, Grid, Group, HoverCard, @@ -14,6 +13,7 @@ import { Text, Title, Tooltip, + createStyles, } from '@mantine/core'; import { IconAnchor, @@ -29,17 +29,18 @@ import { } from '@tabler/icons-react'; import { motion } from 'framer-motion'; import { InitOptions } from 'i18next'; -import { i18n, Trans, useTranslation } from 'next-i18next'; +import { Trans, i18n, useTranslation } from 'next-i18next'; import Image from 'next/image'; import { ReactNode } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { useEditModeInformationStore } from '../../../../hooks/useEditModeInformation'; import { usePackageAttributesStore } from '../../../../tools/client/zustands/usePackageAttributesStore'; import { useColorTheme } from '../../../../tools/color'; +import Credits from '../../../Settings/Common/Credits'; import Tip from '../../../layout/Tip'; import { usePrimaryGradient } from '../../../layout/useGradient'; -import Credits from '../../../Settings/Common/Credits'; interface AboutModalProps { opened: boolean; diff --git a/src/components/Dashboard/Modals/ChangePosition/ChangeAppPositionModal.tsx b/src/components/Dashboard/Modals/ChangePosition/ChangeAppPositionModal.tsx index dc18afe0e..f943b3942 100644 --- a/src/components/Dashboard/Modals/ChangePosition/ChangeAppPositionModal.tsx +++ b/src/components/Dashboard/Modals/ChangePosition/ChangeAppPositionModal.tsx @@ -1,5 +1,6 @@ import { SelectItem } from '@mantine/core'; -import { closeModal, ContextModalProps } from '@mantine/modals'; +import { ContextModalProps, closeModal } from '@mantine/modals'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { AppType } from '../../../../types/app'; diff --git a/src/components/Dashboard/Modals/ChangePosition/ChangePositionModal.tsx b/src/components/Dashboard/Modals/ChangePosition/ChangePositionModal.tsx index db3d06c79..3214b95d2 100644 --- a/src/components/Dashboard/Modals/ChangePosition/ChangePositionModal.tsx +++ b/src/components/Dashboard/Modals/ChangePosition/ChangePositionModal.tsx @@ -1,6 +1,7 @@ import { Button, Flex, Grid, NumberInput, Select, SelectItem } from '@mantine/core'; import { useForm } from '@mantine/form'; import { useTranslation } from 'next-i18next'; + import { useConfigContext } from '../../../../config/provider'; interface ChangePositionModalProps { diff --git a/src/components/Dashboard/Modals/ChangePosition/ChangeWidgetPositionModal.tsx b/src/components/Dashboard/Modals/ChangePosition/ChangeWidgetPositionModal.tsx index b6a9e3677..25236c79b 100644 --- a/src/components/Dashboard/Modals/ChangePosition/ChangeWidgetPositionModal.tsx +++ b/src/components/Dashboard/Modals/ChangePosition/ChangeWidgetPositionModal.tsx @@ -1,5 +1,6 @@ import { SelectItem } from '@mantine/core'; -import { closeModal, ContextModalProps } from '@mantine/modals'; +import { ContextModalProps, closeModal } from '@mantine/modals'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import widgets from '../../../../widgets'; diff --git a/src/components/Dashboard/Modals/EditAppModal/EditAppModal.tsx b/src/components/Dashboard/Modals/EditAppModal/EditAppModal.tsx index 7628a842a..c2dfa21f5 100644 --- a/src/components/Dashboard/Modals/EditAppModal/EditAppModal.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/EditAppModal.tsx @@ -12,6 +12,7 @@ import { } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { AppType } from '../../../../types/app'; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/AppereanceTab/AppereanceTab.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/AppereanceTab/AppereanceTab.tsx index 0ffd0a7cf..9eb095fde 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/AppereanceTab/AppereanceTab.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/AppereanceTab/AppereanceTab.tsx @@ -2,6 +2,7 @@ import { Flex, Tabs } from '@mantine/core'; import { UseFormReturnType } from '@mantine/form'; import { useDebouncedValue } from '@mantine/hooks'; import { useEffect, useRef } from 'react'; + import { AppType } from '../../../../../../types/app'; import { IconSelector } from '../../../../../IconSelector/IconSelector'; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/BehaviourTab/BehaviourTab.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/BehaviourTab/BehaviourTab.tsx index 2f942927c..a48b837ae 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/BehaviourTab/BehaviourTab.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/BehaviourTab/BehaviourTab.tsx @@ -1,6 +1,7 @@ -import { Tabs, Switch } from '@mantine/core'; +import { Switch, Tabs } from '@mantine/core'; import { UseFormReturnType } from '@mantine/form'; import { useTranslation } from 'next-i18next'; + import { AppType } from '../../../../../../types/app'; interface BehaviourTabProps { diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/GeneralTab/GeneralTab.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/GeneralTab/GeneralTab.tsx index 6a1c57b2f..817492858 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/GeneralTab/GeneralTab.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/GeneralTab/GeneralTab.tsx @@ -2,6 +2,7 @@ import { Tabs, TextInput } from '@mantine/core'; import { UseFormReturnType } from '@mantine/form'; import { IconClick, IconCursorText, IconLink } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { AppType } from '../../../../../../types/app'; import { EditAppModalTab } from '../type'; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/GenericSecretInput.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/GenericSecretInput.tsx index ba11d8f34..9370dad18 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/GenericSecretInput.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/GenericSecretInput.tsx @@ -1,20 +1,21 @@ import { + Badge, Button, Card, - createStyles, Flex, Grid, Group, PasswordInput, + Text, ThemeIcon, Title, - Text, - Badge, Tooltip, + createStyles, } from '@mantine/core'; import { Icon } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; + import { AppIntegrationPropertyAccessabilityType } from '../../../../../../../../types/app'; interface GenericSecretInputProps { diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/IntegrationSelector.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/IntegrationSelector.tsx index 16c15e620..ec92a9025 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/IntegrationSelector.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/IntegrationSelector.tsx @@ -3,13 +3,14 @@ import { Group, Image, Select, SelectItem, Text } from '@mantine/core'; import { UseFormReturnType } from '@mantine/form'; import { useTranslation } from 'next-i18next'; import { forwardRef } from 'react'; + import { - IntegrationField, - integrationFieldDefinitions, - integrationFieldProperties, AppIntegrationPropertyType, AppIntegrationType, AppType, + IntegrationField, + integrationFieldDefinitions, + integrationFieldProperties, } from '../../../../../../../../types/app'; interface IntegrationSelectorProps { diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx index 9d8a304b8..f1da7d4c6 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx @@ -1,12 +1,13 @@ import { Stack } from '@mantine/core'; import { UseFormReturnType } from '@mantine/form'; import { IconKey } from '@tabler/icons-react'; + import { + AppIntegrationPropertyType, + AppType, IntegrationField, integrationFieldDefinitions, integrationFieldProperties, - AppIntegrationPropertyType, - AppType, } from '../../../../../../../../types/app'; import { GenericSecretInput } from '../InputElements/GenericSecretInput'; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx index 52cd7660c..38d2d84a7 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx @@ -2,6 +2,7 @@ import { Alert, Divider, Tabs, Text } from '@mantine/core'; import { UseFormReturnType } from '@mantine/form'; import { IconAlertTriangle } from '@tabler/icons-react'; import { Trans, useTranslation } from 'next-i18next'; + import { AppType } from '../../../../../../types/app'; import { IntegrationSelector } from './Components/InputElements/IntegrationSelector'; import { IntegrationOptionsRenderer } from './Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer'; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx b/src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx index 2701639fd..7f1bc797a 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx +++ b/src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx @@ -1,6 +1,7 @@ -import { Tabs, Switch, MultiSelect } from '@mantine/core'; +import { MultiSelect, Switch, Tabs } from '@mantine/core'; import { UseFormReturnType } from '@mantine/form'; import { useTranslation } from 'next-i18next'; + import { StatusCodes } from '../../../../../../tools/acceptableStatusCodes'; import { AppType } from '../../../../../../types/app'; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx b/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx index dfba66d99..a35277384 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx +++ b/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx @@ -6,6 +6,7 @@ import { motion } from 'framer-motion'; import { useTranslation } from 'next-i18next'; import { ReactNode } from 'react'; import { v4 as uuidv4 } from 'uuid'; + import { useConfigContext } from '../../../../../../config/provider'; import { useConfigStore } from '../../../../../../config/store'; import { openContextModalGeneric } from '../../../../../../tools/mantineModalManagerExtensions'; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx b/src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx index 98542e144..45c0807e9 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx +++ b/src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx @@ -3,6 +3,7 @@ import { Icon } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import Image from 'next/image'; import React from 'react'; + import { useStyles } from './styles'; interface GenericAvailableElementTypeProps { diff --git a/src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx b/src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx index 180fae5c2..a17f0f724 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx +++ b/src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx @@ -1,6 +1,7 @@ import { Grid, Text } from '@mantine/core'; import { IconCursorText } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { GenericAvailableElementType } from '../Shared/GenericElementType'; import { SelectorBackArrow } from '../Shared/SelectorBackArrow'; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx b/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx index 80257ea9b..d013567a3 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx +++ b/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx @@ -1,5 +1,6 @@ import { Grid, Text } from '@mantine/core'; import { useTranslation } from 'next-i18next'; + import widgets from '../../../../../../widgets'; import { SelectorBackArrow } from '../Shared/SelectorBackArrow'; import { WidgetElementType } from './WidgetElementType'; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx b/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx index 525273df5..5e6d5c18d 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx +++ b/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx @@ -1,8 +1,9 @@ import { useModals } from '@mantine/modals'; import { showNotification } from '@mantine/notifications'; -import { IconChecks, Icon } from '@tabler/icons-react'; +import { Icon, IconChecks } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { v4 as uuidv4 } from 'uuid'; + import { useConfigContext } from '../../../../../../config/provider'; import { useConfigStore } from '../../../../../../config/store'; import { IWidget, IWidgetDefinition } from '../../../../../../widgets/widgets'; @@ -37,11 +38,14 @@ export const WidgetElementType = ({ id, image, disabled, widget }: WidgetElement { id: uuidv4(), type: widget.id, - properties: Object.entries(widget.options).reduce((prev, [k, v]) => { - const newPrev = prev; - newPrev[k] = v.defaultValue; - return newPrev; - }, {} as IWidget['properties']), + properties: Object.entries(widget.options).reduce( + (prev, [k, v]) => { + const newPrev = prev; + newPrev[k] = v.defaultValue; + return newPrev; + }, + {} as IWidget['properties'] + ), area: { type: 'wrapper', properties: { diff --git a/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx b/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx index 0f288c1ce..fca0a4eed 100644 --- a/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx +++ b/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx @@ -1,8 +1,9 @@ import { ContextModalProps } from '@mantine/modals'; import { useState } from 'react'; -import { AvailableIntegrationElements } from './Components/WidgetsTab/AvailableWidgetsTab'; + import { AvailableElementTypes } from './Components/Overview/AvailableElementsOverview'; import { AvailableStaticTypes } from './Components/StaticElementsTab/AvailableStaticElementsTab'; +import { AvailableIntegrationElements } from './Components/WidgetsTab/AvailableWidgetsTab'; export const SelectElementModal = ({ context, id }: ContextModalProps) => { const [activeTab, setActiveTab] = useState(); diff --git a/src/components/Dashboard/Tiles/Apps/AppTile.tsx b/src/components/Dashboard/Tiles/Apps/AppTile.tsx index 83989478a..2610cb9b3 100644 --- a/src/components/Dashboard/Tiles/Apps/AppTile.tsx +++ b/src/components/Dashboard/Tiles/Apps/AppTile.tsx @@ -2,6 +2,7 @@ import { Box, Stack, Title, UnstyledButton } from '@mantine/core'; import { createStyles } from '@mantine/styles'; import { motion } from 'framer-motion'; import Link from 'next/link'; + import { AppType } from '../../../../types/app'; import { useCardStyles } from '../../../layout/useCardStyles'; import { useEditModeStore } from '../../Views/useEditModeStore'; diff --git a/src/components/Dashboard/Tiles/GenericTileMenu.tsx b/src/components/Dashboard/Tiles/GenericTileMenu.tsx index ce7735f66..7cd0b08f7 100644 --- a/src/components/Dashboard/Tiles/GenericTileMenu.tsx +++ b/src/components/Dashboard/Tiles/GenericTileMenu.tsx @@ -1,6 +1,7 @@ import { ActionIcon, Menu } from '@mantine/core'; import { IconLayoutKanban, IconPencil, IconSettings, IconTrash } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { useEditModeStore } from '../Views/useEditModeStore'; interface GenericTileMenuProps { diff --git a/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx b/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx index 1a4211fdf..815ca892a 100644 --- a/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx +++ b/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx @@ -1,5 +1,6 @@ import { Card, CardProps } from '@mantine/core'; import { ReactNode } from 'react'; + import { useCardStyles } from '../../layout/useCardStyles'; import { useEditModeStore } from '../Views/useEditModeStore'; diff --git a/src/components/Dashboard/Tiles/Widgets/Inputs/LocationSelection.tsx b/src/components/Dashboard/Tiles/Widgets/Inputs/LocationSelection.tsx index 90ff64b02..33c477a7b 100644 --- a/src/components/Dashboard/Tiles/Widgets/Inputs/LocationSelection.tsx +++ b/src/components/Dashboard/Tiles/Widgets/Inputs/LocationSelection.tsx @@ -1,26 +1,27 @@ import { - Card, - Stack, - Text, - Title, - Group, - TextInput, - Button, - NumberInput, - Modal, - Table, - Tooltip, ActionIcon, + Button, + Card, + Group, Loader, + Modal, + NumberInput, + Stack, + Table, + Text, + TextInput, + Title, + Tooltip, } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; -import { IconListSearch, IconClick } from '@tabler/icons-react'; +import { IconClick, IconListSearch } from '@tabler/icons-react'; import { useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { IntegrationOptionsValueType } from '../WidgetsEditModal'; import { City } from '~/server/api/routers/weather'; import { api } from '~/utils/api'; +import { IntegrationOptionsValueType } from '../WidgetsEditModal'; + type LocationSelectionProps = { widgetId: string; propName: string; diff --git a/src/components/Dashboard/Tiles/Widgets/Inputs/StaticDraggableList.tsx b/src/components/Dashboard/Tiles/Widgets/Inputs/StaticDraggableList.tsx index 7e6600722..8df503e25 100644 --- a/src/components/Dashboard/Tiles/Widgets/Inputs/StaticDraggableList.tsx +++ b/src/components/Dashboard/Tiles/Widgets/Inputs/StaticDraggableList.tsx @@ -1,8 +1,9 @@ -import { Collapse, createStyles, Flex, Stack, Text } from '@mantine/core'; +import { Collapse, Flex, Stack, Text, createStyles } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { IconChevronDown, IconGripVertical } from '@tabler/icons-react'; import { Reorder, useDragControls } from 'framer-motion'; import { FC, ReactNode, useEffect, useRef } from 'react'; + import { IDraggableListInputValue } from '../../../../../widgets/widgets'; const useStyles = createStyles((theme) => ({ @@ -64,10 +65,10 @@ export const StaticDraggableList: FC = (props) => { as="div" > {props.value.map((item) => ( - - {props.children?.[item.key]} - - ))} + + {props.children?.[item.key]} + + ))} ); diff --git a/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx b/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx index ecc817d13..f37f4f1a5 100644 --- a/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx +++ b/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx @@ -18,6 +18,7 @@ import { ContextModalProps } from '@mantine/modals'; import { IconAlertTriangle, IconPlaylistX, IconPlus } from '@tabler/icons-react'; import { Trans, useTranslation } from 'next-i18next'; import { FC, useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { mapObject } from '../../../../tools/client/objects'; @@ -47,7 +48,7 @@ export const WidgetsEditModal = ({ const [moduleProperties, setModuleProperties] = useState(innerProps.options); const items = Object.entries(innerProps.widgetOptions ?? {}) as [ string, - IntegrationOptionsValueType + IntegrationOptionsValueType, ][]; // Find the Key in the "Widgets" Object that matches the widgetId diff --git a/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx b/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx index 5d1e49023..aa3015511 100644 --- a/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx +++ b/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx @@ -1,5 +1,6 @@ import { Title } from '@mantine/core'; import { useTranslation } from 'next-i18next'; + import { openContextModalGeneric } from '../../../../tools/mantineModalManagerExtensions'; import WidgetsDefinitions from '../../../../widgets'; import { IWidget } from '../../../../widgets/widgets'; diff --git a/src/components/Dashboard/Tiles/Widgets/WidgetsRemoveModal.tsx b/src/components/Dashboard/Tiles/Widgets/WidgetsRemoveModal.tsx index e50229c0b..dc1469d51 100644 --- a/src/components/Dashboard/Tiles/Widgets/WidgetsRemoveModal.tsx +++ b/src/components/Dashboard/Tiles/Widgets/WidgetsRemoveModal.tsx @@ -1,7 +1,8 @@ -import React from 'react'; import { Button, Group, Stack, Text } from '@mantine/core'; import { ContextModalProps } from '@mantine/modals'; import { Trans, useTranslation } from 'next-i18next'; +import React from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; diff --git a/src/components/Dashboard/Views/DashboardView.tsx b/src/components/Dashboard/Views/DashboardView.tsx index c87c17050..244d1ff19 100644 --- a/src/components/Dashboard/Views/DashboardView.tsx +++ b/src/components/Dashboard/Views/DashboardView.tsx @@ -1,5 +1,6 @@ import { Group, Stack } from '@mantine/core'; import { useEffect, useMemo, useRef } from 'react'; + import { useConfigContext } from '../../../config/provider'; import { useResize } from '../../../hooks/use-resize'; import { useScreenLargerThan } from '../../../hooks/useScreenLargerThan'; diff --git a/src/components/Dashboard/Views/ViewToggleButton.tsx b/src/components/Dashboard/Views/ViewToggleButton.tsx index fc799814c..28720955a 100644 --- a/src/components/Dashboard/Views/ViewToggleButton.tsx +++ b/src/components/Dashboard/Views/ViewToggleButton.tsx @@ -1,6 +1,7 @@ import { ActionIcon, Button, Text, Tooltip } from '@mantine/core'; import { IconEdit, IconEditOff } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { useScreenLargerThan } from '../../../hooks/useScreenLargerThan'; import { useEditModeStore } from './useEditModeStore'; diff --git a/src/components/Dashboard/Wrappers/Category/Category.tsx b/src/components/Dashboard/Wrappers/Category/Category.tsx index 23efd72e8..ca7dfd469 100644 --- a/src/components/Dashboard/Wrappers/Category/Category.tsx +++ b/src/components/Dashboard/Wrappers/Category/Category.tsx @@ -2,23 +2,24 @@ import { Accordion, ActionIcon, Box, - Menu, - Title, - Text, - Stack, List, + Menu, + Stack, + Text, + Title, createStyles, } from '@mantine/core'; import { useLocalStorage } from '@mantine/hooks'; -import { IconDotsVertical, IconShare3 } from '@tabler/icons-react'; import { modals } from '@mantine/modals'; +import { IconDotsVertical, IconShare3 } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { useConfigContext } from '../../../../config/provider'; import { CategoryType } from '../../../../types/category'; import { useCardStyles } from '../../../layout/useCardStyles'; import { useEditModeStore } from '../../Views/useEditModeStore'; -import { useGridstack } from '../gridstack/use-gridstack'; import { WrapperContent } from '../WrapperContent'; +import { useGridstack } from '../gridstack/use-gridstack'; import { CategoryEditMenu } from './CategoryEditMenu'; interface DashboardCategoryProps { @@ -108,10 +109,7 @@ export const DashboardCategory = ({ category }: DashboardCategoryProps) => { - } - > + }> {t('actions.category.openAllInNewTab')} diff --git a/src/components/Dashboard/Wrappers/Category/CategoryEditMenu.tsx b/src/components/Dashboard/Wrappers/Category/CategoryEditMenu.tsx index 75b604d4f..fa279766b 100644 --- a/src/components/Dashboard/Wrappers/Category/CategoryEditMenu.tsx +++ b/src/components/Dashboard/Wrappers/Category/CategoryEditMenu.tsx @@ -1,13 +1,14 @@ import { ActionIcon, Menu } from '@mantine/core'; import { - IconTransitionTop, - IconTransitionBottom, - IconRowInsertTop, - IconRowInsertBottom, IconEdit, - IconTrash, + IconRowInsertBottom, + IconRowInsertTop, IconSettings, + IconTransitionBottom, + IconTransitionTop, + IconTrash, } from '@tabler/icons-react'; + import { useConfigContext } from '../../../../config/provider'; import { CategoryType } from '../../../../types/category'; import { useCategoryActions } from './useCategoryActions'; diff --git a/src/components/Dashboard/Wrappers/Category/CategoryEditModal.tsx b/src/components/Dashboard/Wrappers/Category/CategoryEditModal.tsx index 0c23d45a6..a78fc0824 100644 --- a/src/components/Dashboard/Wrappers/Category/CategoryEditModal.tsx +++ b/src/components/Dashboard/Wrappers/Category/CategoryEditModal.tsx @@ -2,6 +2,7 @@ import { Button, Group, TextInput } from '@mantine/core'; import { useForm } from '@mantine/form'; import { ContextModalProps } from '@mantine/modals'; import { useTranslation } from 'next-i18next'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { CategoryType } from '../../../../types/category'; diff --git a/src/components/Dashboard/Wrappers/Category/useCategoryActions.tsx b/src/components/Dashboard/Wrappers/Category/useCategoryActions.tsx index 85d20f35c..418bb569d 100644 --- a/src/components/Dashboard/Wrappers/Category/useCategoryActions.tsx +++ b/src/components/Dashboard/Wrappers/Category/useCategoryActions.tsx @@ -1,4 +1,5 @@ import { v4 as uuidv4 } from 'uuid'; + import { useConfigStore } from '../../../../config/store'; import { openContextModalGeneric } from '../../../../tools/mantineModalManagerExtensions'; import { AppType } from '../../../../types/app'; diff --git a/src/components/Dashboard/Wrappers/Sidebar/Sidebar.tsx b/src/components/Dashboard/Wrappers/Sidebar/Sidebar.tsx index 6e60a4f7d..5e604aa3d 100644 --- a/src/components/Dashboard/Wrappers/Sidebar/Sidebar.tsx +++ b/src/components/Dashboard/Wrappers/Sidebar/Sidebar.tsx @@ -1,8 +1,9 @@ import { Card } from '@mantine/core'; import { RefObject } from 'react'; + import { useCardStyles } from '../../../layout/useCardStyles'; -import { useGridstack } from '../gridstack/use-gridstack'; import { WrapperContent } from '../WrapperContent'; +import { useGridstack } from '../gridstack/use-gridstack'; interface DashboardSidebarProps extends DashboardSidebarInnerProps { location: 'right' | 'left'; diff --git a/src/components/Dashboard/Wrappers/Wrapper/Wrapper.tsx b/src/components/Dashboard/Wrappers/Wrapper/Wrapper.tsx index bdc61c10a..c4cf1b0ff 100644 --- a/src/components/Dashboard/Wrappers/Wrapper/Wrapper.tsx +++ b/src/components/Dashboard/Wrappers/Wrapper/Wrapper.tsx @@ -1,7 +1,7 @@ import { WrapperType } from '../../../../types/wrapper'; import { useEditModeStore } from '../../Views/useEditModeStore'; -import { useGridstack } from '../gridstack/use-gridstack'; import { WrapperContent } from '../WrapperContent'; +import { useGridstack } from '../gridstack/use-gridstack'; interface DashboardWrapperProps { wrapper: WrapperType; diff --git a/src/components/Dashboard/Wrappers/WrapperContent.tsx b/src/components/Dashboard/Wrappers/WrapperContent.tsx index f35250045..754c8d993 100644 --- a/src/components/Dashboard/Wrappers/WrapperContent.tsx +++ b/src/components/Dashboard/Wrappers/WrapperContent.tsx @@ -1,5 +1,6 @@ import { GridStack } from 'fily-publish-gridstack'; import { MutableRefObject, RefObject } from 'react'; + import { AppType } from '../../../types/app'; import Widgets from '../../../widgets'; import { WidgetWrapper } from '../../../widgets/WidgetWrapper'; diff --git a/src/components/Dashboard/Wrappers/gridstack/init-gridstack.ts b/src/components/Dashboard/Wrappers/gridstack/init-gridstack.ts index 8e2426aaf..c9b347783 100644 --- a/src/components/Dashboard/Wrappers/gridstack/init-gridstack.ts +++ b/src/components/Dashboard/Wrappers/gridstack/init-gridstack.ts @@ -1,5 +1,6 @@ import { GridItemHTMLElement, GridStack, GridStackNode } from 'fily-publish-gridstack'; import { MutableRefObject, RefObject } from 'react'; + import { AppType } from '../../../../types/app'; import { ShapeType } from '../../../../types/shape'; import { IWidget } from '../../../../widgets/widgets'; diff --git a/src/components/Dashboard/Wrappers/gridstack/store.tsx b/src/components/Dashboard/Wrappers/gridstack/store.tsx index b362c0f73..583b579b4 100644 --- a/src/components/Dashboard/Wrappers/gridstack/store.tsx +++ b/src/components/Dashboard/Wrappers/gridstack/store.tsx @@ -1,4 +1,5 @@ import { create } from 'zustand'; + import { useConfigContext } from '../../../../config/provider'; import { GridstackBreakpoints } from '../../../../constants/gridstack-breakpoints'; diff --git a/src/components/Dashboard/Wrappers/gridstack/use-gridstack.ts b/src/components/Dashboard/Wrappers/gridstack/use-gridstack.ts index 85a48da0e..d6f304798 100644 --- a/src/components/Dashboard/Wrappers/gridstack/use-gridstack.ts +++ b/src/components/Dashboard/Wrappers/gridstack/use-gridstack.ts @@ -1,12 +1,13 @@ import { GridStack, GridStackNode } from 'fily-publish-gridstack'; -import { createRef, MutableRefObject, RefObject, useEffect, useMemo, useRef } from 'react'; +import { MutableRefObject, RefObject, createRef, useEffect, useMemo, useRef } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { AppType } from '../../../../types/app'; import { AreaType } from '../../../../types/area'; import { IWidget } from '../../../../widgets/widgets'; import { useEditModeStore } from '../../Views/useEditModeStore'; -import { initializeGridstack, TileWithUnknownLocation } from './init-gridstack'; +import { TileWithUnknownLocation, initializeGridstack } from './init-gridstack'; import { useGridstackStore, useWrapperColumnCount } from './store'; interface UseGristackReturnType { diff --git a/src/components/IconSelector/IconSelector.tsx b/src/components/IconSelector/IconSelector.tsx index 5929fc22c..7ca3a3b8b 100644 --- a/src/components/IconSelector/IconSelector.tsx +++ b/src/components/IconSelector/IconSelector.tsx @@ -1,23 +1,24 @@ -import { forwardRef, useImperativeHandle, useState } from 'react'; import { Autocomplete, - CloseButton, - Stack, - Title, - Text, - Group, - Loader, - createStyles, Box, + CloseButton, + Group, Image, - SelectItemProps, + Loader, ScrollArea, + SelectItemProps, + Stack, + Text, + Title, + createStyles, } from '@mantine/core'; import { IconSearch } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; +import { forwardRef, useImperativeHandle, useState } from 'react'; +import { api } from '~/utils/api'; + import { humanFileSize } from '../../tools/humanFileSize'; import { DebouncedImage } from './DebouncedImage'; -import { api } from '~/utils/api'; export const IconSelector = forwardRef( ( diff --git a/src/components/Settings/Common/CacheButtons.tsx b/src/components/Settings/Common/CacheButtons.tsx index c2fb52669..eb35ae99c 100644 --- a/src/components/Settings/Common/CacheButtons.tsx +++ b/src/components/Settings/Common/CacheButtons.tsx @@ -1,7 +1,8 @@ import { Button, Group, MultiSelect, Stack, Title } from '@mantine/core'; -import { useState } from 'react'; import { notifications } from '@mantine/notifications'; import { IconTrash } from '@tabler/icons-react'; +import { useState } from 'react'; + import { queryClient } from '../../../tools/server/configurations/tanstack/queryClient.tool'; const data = [ diff --git a/src/components/Settings/Common/CommonSettings.tsx b/src/components/Settings/Common/CommonSettings.tsx index 13d175bc5..26ccaec6e 100644 --- a/src/components/Settings/Common/CommonSettings.tsx +++ b/src/components/Settings/Common/CommonSettings.tsx @@ -1,11 +1,12 @@ import { ScrollArea, Space, Stack, Text } from '@mantine/core'; import { useViewportSize } from '@mantine/hooks'; + import { useConfigContext } from '../../../config/provider'; import ConfigChanger from '../../Config/ConfigChanger'; +import { CacheButtons } from './CacheButtons'; import ConfigActions from './Config/ConfigActions'; import LanguageSelect from './Language/LanguageSelect'; import { SearchEngineSelector } from './SearchEngine/SearchEngineSelector'; -import { CacheButtons } from './CacheButtons'; export default function CommonSettings() { const { config } = useConfigContext(); diff --git a/src/components/Settings/Common/Config/ConfigActions.tsx b/src/components/Settings/Common/Config/ConfigActions.tsx index 700ccd70d..e3bb2941d 100644 --- a/src/components/Settings/Common/Config/ConfigActions.tsx +++ b/src/components/Settings/Common/Config/ConfigActions.tsx @@ -2,9 +2,9 @@ import { ActionIcon, Alert, Center, - createStyles, Flex, Text, + createStyles, useMantineTheme, } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; @@ -21,11 +21,12 @@ import { import fileDownload from 'js-file-download'; import { Trans, useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; +import { api } from '~/utils/api'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import Tip from '../../../layout/Tip'; import { CreateConfigCopyModal } from './CreateCopyModal'; -import { api } from '~/utils/api'; export default function ConfigActions() { const { t } = useTranslation(['settings/general/config-changer', 'settings/common', 'common']); diff --git a/src/components/Settings/Common/Config/CreateCopyModal.tsx b/src/components/Settings/Common/Config/CreateCopyModal.tsx index bf1409d1f..1acdd89cc 100644 --- a/src/components/Settings/Common/Config/CreateCopyModal.tsx +++ b/src/components/Settings/Common/Config/CreateCopyModal.tsx @@ -1,12 +1,13 @@ import { Button, Group, Modal, TextInput, Title } from '@mantine/core'; import { useForm } from '@mantine/form'; -import { useTranslation } from 'next-i18next'; -import { IconCheck, IconX } from '@tabler/icons-react'; import { showNotification } from '@mantine/notifications'; -import { useConfigStore } from '../../../../config/store'; +import { IconCheck, IconX } from '@tabler/icons-react'; +import { useTranslation } from 'next-i18next'; import { useConfigContext } from '~/config/provider'; import { api } from '~/utils/api'; +import { useConfigStore } from '../../../../config/store'; + interface CreateConfigCopyModalProps { opened: boolean; closeModal: () => void; diff --git a/src/components/Settings/Common/Credits.tsx b/src/components/Settings/Common/Credits.tsx index e1fc8bd15..28f245871 100644 --- a/src/components/Settings/Common/Credits.tsx +++ b/src/components/Settings/Common/Credits.tsx @@ -1,6 +1,7 @@ import { Anchor, Box, Collapse, Flex, Table, Text } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { useTranslation } from 'next-i18next'; + import { usePackageAttributesStore } from '../../../tools/client/zustands/usePackageAttributesStore'; export default function Credits() { diff --git a/src/components/Settings/Common/Language/LanguageSelect.tsx b/src/components/Settings/Common/Language/LanguageSelect.tsx index b21b2011d..37dbdec9b 100644 --- a/src/components/Settings/Common/Language/LanguageSelect.tsx +++ b/src/components/Settings/Common/Language/LanguageSelect.tsx @@ -1,11 +1,11 @@ import { Group, Select, Stack, Text } from '@mantine/core'; import { showNotification } from '@mantine/notifications'; - -import { forwardRef, useState } from 'react'; +import { getCookie, setCookie } from 'cookies-next'; import { useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; -import { getCookie, setCookie } from 'cookies-next'; -import { getLanguageByCode, Language } from '../../../../tools/language'; +import { forwardRef, useState } from 'react'; + +import { Language, getLanguageByCode } from '../../../../tools/language'; export default function LanguageSelect() { const { t, i18n } = useTranslation('settings/general/internationalization'); diff --git a/src/components/Settings/Common/SearchEngine/SearchEngineSelector.tsx b/src/components/Settings/Common/SearchEngine/SearchEngineSelector.tsx index 7798d640c..eb0fa634d 100644 --- a/src/components/Settings/Common/SearchEngine/SearchEngineSelector.tsx +++ b/src/components/Settings/Common/SearchEngine/SearchEngineSelector.tsx @@ -2,6 +2,7 @@ import { Alert, Paper, SegmentedControl, Space, Stack, TextInput, Title } from ' import { IconInfoCircle } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { ChangeEventHandler, useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { diff --git a/src/components/Settings/Common/SearchEngine/SearchNewTabSwitch.tsx b/src/components/Settings/Common/SearchEngine/SearchNewTabSwitch.tsx index 46ae6988a..301bad508 100644 --- a/src/components/Settings/Common/SearchEngine/SearchNewTabSwitch.tsx +++ b/src/components/Settings/Common/SearchEngine/SearchNewTabSwitch.tsx @@ -1,6 +1,7 @@ import { Switch } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { SearchEngineCommonSettingsType } from '../../../../types/settings'; diff --git a/src/components/Settings/Customization/Accessibility/AccessibilitySettings.tsx b/src/components/Settings/Customization/Accessibility/AccessibilitySettings.tsx index 74d28a6b0..fc4e92eb5 100644 --- a/src/components/Settings/Customization/Accessibility/AccessibilitySettings.tsx +++ b/src/components/Settings/Customization/Accessibility/AccessibilitySettings.tsx @@ -1,10 +1,11 @@ import { Alert, Stack, Switch } from '@mantine/core'; import { IconInfoCircle } from '@tabler/icons-react'; import { BaseSyntheticEvent } from 'react'; -import { useConfigStore } from '../../../../config/store'; -import { useConfigContext } from '../../../../config/provider'; import { useTranslation } from 'react-i18next'; +import { useConfigContext } from '../../../../config/provider'; +import { useConfigStore } from '../../../../config/store'; + export const AccessibilitySettings = () => { const { t } = useTranslation('settings/customization/accessibility'); const { updateConfig } = useConfigStore(); diff --git a/src/components/Settings/Customization/CustomizationAccordeon.tsx b/src/components/Settings/Customization/CustomizationAccordeon.tsx index 39315ee49..939b8c2ac 100644 --- a/src/components/Settings/Customization/CustomizationAccordeon.tsx +++ b/src/components/Settings/Customization/CustomizationAccordeon.tsx @@ -1,7 +1,16 @@ import { Accordion, Checkbox, Grid, Group, Stack, Text } from '@mantine/core'; -import { IconAccessible, IconBrush, IconChartCandle, IconCode, IconDragDrop, IconLayout } from '@tabler/icons-react'; +import { + IconAccessible, + IconBrush, + IconChartCandle, + IconCode, + IconDragDrop, + IconLayout, +} from '@tabler/icons-react'; import { i18n, useTranslation } from 'next-i18next'; import { ReactNode } from 'react'; + +import { AccessibilitySettings } from './Accessibility/AccessibilitySettings'; import { GridstackConfiguration } from './Layout/GridstackConfiguration'; import { LayoutSelector } from './Layout/LayoutSelector'; import { BackgroundChanger } from './Meta/BackgroundChanger'; @@ -13,7 +22,6 @@ import { ColorSelector } from './Theme/ColorSelector'; import { CustomCssChanger } from './Theme/CustomCssChanger'; import { DashboardTilesOpacitySelector } from './Theme/OpacitySelector'; import { ShadeSelector } from './Theme/ShadeSelector'; -import { AccessibilitySettings } from './Accessibility/AccessibilitySettings'; export const CustomizationSettingsAccordeon = () => { const items = getItems().map((item) => ( diff --git a/src/components/Settings/Customization/CustomizationSettings.tsx b/src/components/Settings/Customization/CustomizationSettings.tsx index bf0ef57a3..84d484f20 100644 --- a/src/components/Settings/Customization/CustomizationSettings.tsx +++ b/src/components/Settings/Customization/CustomizationSettings.tsx @@ -1,6 +1,7 @@ import { ScrollArea, Stack, Text } from '@mantine/core'; import { useViewportSize } from '@mantine/hooks'; import { useTranslation } from 'next-i18next'; + import { CustomizationSettingsAccordeon } from './CustomizationAccordeon'; export default function CustomizationSettings() { diff --git a/src/components/Settings/Customization/Layout/GridstackConfiguration.tsx b/src/components/Settings/Customization/Layout/GridstackConfiguration.tsx index 0455f3b6c..31a70ce53 100644 --- a/src/components/Settings/Customization/Layout/GridstackConfiguration.tsx +++ b/src/components/Settings/Customization/Layout/GridstackConfiguration.tsx @@ -3,6 +3,7 @@ import { useForm } from '@mantine/form'; import { IconCheck, IconReload } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { GridstackBreakpoints } from '../../../../constants/gridstack-breakpoints'; diff --git a/src/components/Settings/Customization/Layout/LayoutSelector.tsx b/src/components/Settings/Customization/Layout/LayoutSelector.tsx index d03642dfe..f5bbd3c87 100644 --- a/src/components/Settings/Customization/Layout/LayoutSelector.tsx +++ b/src/components/Settings/Customization/Layout/LayoutSelector.tsx @@ -1,6 +1,5 @@ import { Checkbox, - createStyles, Divider, Flex, Group, @@ -9,9 +8,11 @@ import { Stack, Text, Title, + createStyles, } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { ChangeEvent, Dispatch, SetStateAction, useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { createDummyArray } from '../../../../tools/client/arrays'; diff --git a/src/components/Settings/Customization/Meta/BackgroundChanger.tsx b/src/components/Settings/Customization/Meta/BackgroundChanger.tsx index 1b26c6de8..53aaea8f3 100644 --- a/src/components/Settings/Customization/Meta/BackgroundChanger.tsx +++ b/src/components/Settings/Customization/Meta/BackgroundChanger.tsx @@ -1,6 +1,7 @@ import { TextInput } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { ChangeEventHandler, useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; diff --git a/src/components/Settings/Customization/Meta/FaviconChanger.tsx b/src/components/Settings/Customization/Meta/FaviconChanger.tsx index 0358ec34c..5bb880d26 100644 --- a/src/components/Settings/Customization/Meta/FaviconChanger.tsx +++ b/src/components/Settings/Customization/Meta/FaviconChanger.tsx @@ -1,6 +1,7 @@ import { TextInput } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { ChangeEventHandler, useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; diff --git a/src/components/Settings/Customization/Meta/LogoImageChanger.tsx b/src/components/Settings/Customization/Meta/LogoImageChanger.tsx index 18fc8246a..77074c060 100644 --- a/src/components/Settings/Customization/Meta/LogoImageChanger.tsx +++ b/src/components/Settings/Customization/Meta/LogoImageChanger.tsx @@ -1,6 +1,7 @@ import { TextInput } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { ChangeEventHandler, useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; diff --git a/src/components/Settings/Customization/Meta/MetaTitleChanger.tsx b/src/components/Settings/Customization/Meta/MetaTitleChanger.tsx index d9e0b440f..90af2dd97 100644 --- a/src/components/Settings/Customization/Meta/MetaTitleChanger.tsx +++ b/src/components/Settings/Customization/Meta/MetaTitleChanger.tsx @@ -1,6 +1,7 @@ import { TextInput } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { ChangeEventHandler, useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; diff --git a/src/components/Settings/Customization/Meta/PageTitleChanger.tsx b/src/components/Settings/Customization/Meta/PageTitleChanger.tsx index eb1609a99..f7745ca4e 100644 --- a/src/components/Settings/Customization/Meta/PageTitleChanger.tsx +++ b/src/components/Settings/Customization/Meta/PageTitleChanger.tsx @@ -1,6 +1,7 @@ import { TextInput } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { ChangeEventHandler, useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; diff --git a/src/components/Settings/Customization/Theme/ColorSelector.tsx b/src/components/Settings/Customization/Theme/ColorSelector.tsx index c31cf748e..c3ae8aae2 100644 --- a/src/components/Settings/Customization/Theme/ColorSelector.tsx +++ b/src/components/Settings/Customization/Theme/ColorSelector.tsx @@ -10,6 +10,7 @@ import { import { useDisclosure } from '@mantine/hooks'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { useColorTheme } from '../../../../tools/color'; diff --git a/src/components/Settings/Customization/Theme/CustomCssChanger.tsx b/src/components/Settings/Customization/Theme/CustomCssChanger.tsx index d829570d1..335c9cebd 100644 --- a/src/components/Settings/Customization/Theme/CustomCssChanger.tsx +++ b/src/components/Settings/Customization/Theme/CustomCssChanger.tsx @@ -1,13 +1,14 @@ -import { Box, createStyles, Group, Loader, Stack, Text, useMantineTheme } from '@mantine/core'; +import { Box, Group, Loader, Stack, Text, createStyles, useMantineTheme } from '@mantine/core'; import { useDebouncedValue } from '@mantine/hooks'; import { useTranslation } from 'next-i18next'; -import { useEffect, useState } from 'react'; -import Editor from 'react-simple-code-editor'; import { highlight, languages } from 'prismjs'; -import { useConfigContext } from '../../../../config/provider'; -import { useConfigStore } from '../../../../config/store'; import 'prismjs/components/prism-css'; import 'prismjs/themes/prism.css'; +import { useEffect, useState } from 'react'; +import Editor from 'react-simple-code-editor'; + +import { useConfigContext } from '../../../../config/provider'; +import { useConfigStore } from '../../../../config/store'; export const CustomCssChanger = () => { const { t } = useTranslation('settings/customization/page-appearance'); diff --git a/src/components/Settings/Customization/Theme/OpacitySelector.tsx b/src/components/Settings/Customization/Theme/OpacitySelector.tsx index 35821aca4..ef25ef364 100644 --- a/src/components/Settings/Customization/Theme/OpacitySelector.tsx +++ b/src/components/Settings/Customization/Theme/OpacitySelector.tsx @@ -1,6 +1,7 @@ import { Slider, Stack, Text } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; diff --git a/src/components/Settings/Customization/Theme/ShadeSelector.tsx b/src/components/Settings/Customization/Theme/ShadeSelector.tsx index c00e81021..82453c611 100644 --- a/src/components/Settings/Customization/Theme/ShadeSelector.tsx +++ b/src/components/Settings/Customization/Theme/ShadeSelector.tsx @@ -11,6 +11,7 @@ import { import { useDisclosure } from '@mantine/hooks'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; + import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { useColorTheme } from '../../../../tools/color'; diff --git a/src/components/layout/Background.tsx b/src/components/layout/Background.tsx index 74fff226b..f37e35429 100644 --- a/src/components/layout/Background.tsx +++ b/src/components/layout/Background.tsx @@ -1,4 +1,5 @@ import { Global } from '@mantine/core'; + import { useConfigContext } from '../../config/provider'; export function Background() { diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx index aa09c783a..db05ecf5b 100644 --- a/src/components/layout/Layout.tsx +++ b/src/components/layout/Layout.tsx @@ -1,4 +1,5 @@ import { AppShell, createStyles } from '@mantine/core'; + import { useConfigContext } from '../../config/provider'; import { Background } from './Background'; import { Header } from './header/Header'; diff --git a/src/components/layout/Logo.tsx b/src/components/layout/Logo.tsx index b7d7536bd..9cc76fb7e 100644 --- a/src/components/layout/Logo.tsx +++ b/src/components/layout/Logo.tsx @@ -1,4 +1,5 @@ import { Group, Image, Text } from '@mantine/core'; + import { useConfigContext } from '../../config/provider'; import { usePrimaryGradient } from './useGradient'; diff --git a/src/components/layout/header/Actions/AddElementAction/AddElementAction.tsx b/src/components/layout/header/Actions/AddElementAction/AddElementAction.tsx index 276f3d2ab..b640283a1 100644 --- a/src/components/layout/header/Actions/AddElementAction/AddElementAction.tsx +++ b/src/components/layout/header/Actions/AddElementAction/AddElementAction.tsx @@ -2,6 +2,7 @@ import { ActionIcon, Button, Tooltip } from '@mantine/core'; import { openContextModal } from '@mantine/modals'; import { IconApps } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { useCardStyles } from '../../../useCardStyles'; interface AddElementActionProps { diff --git a/src/components/layout/header/Actions/ToggleEditMode/ToggleEditMode.tsx b/src/components/layout/header/Actions/ToggleEditMode/ToggleEditMode.tsx index 3cbe17e15..3103b8ee4 100644 --- a/src/components/layout/header/Actions/ToggleEditMode/ToggleEditMode.tsx +++ b/src/components/layout/header/Actions/ToggleEditMode/ToggleEditMode.tsx @@ -5,10 +5,10 @@ import { IconEditCircle, IconEditCircleOff } from '@tabler/icons-react'; import Consola from 'consola'; import { getCookie } from 'cookies-next'; import { Trans, useTranslation } from 'next-i18next'; +import { api } from '~/utils/api'; + import { useConfigContext } from '../../../../../config/provider'; import { useScreenSmallerThan } from '../../../../../hooks/useScreenSmallerThan'; - -import { api } from '~/utils/api'; import { useEditModeStore } from '../../../../Dashboard/Views/useEditModeStore'; import { useNamedWrapperColumnCount } from '../../../../Dashboard/Wrappers/gridstack/store'; import { useCardStyles } from '../../../useCardStyles'; diff --git a/src/components/layout/header/Header.tsx b/src/components/layout/header/Header.tsx index 44bb12b51..fc464ea0f 100644 --- a/src/components/layout/header/Header.tsx +++ b/src/components/layout/header/Header.tsx @@ -1,5 +1,6 @@ -import { Box, createStyles, Group, Header as MantineHeader, Indicator } from '@mantine/core'; +import { Box, Group, Indicator, Header as MantineHeader, createStyles } from '@mantine/core'; import { useQuery } from '@tanstack/react-query'; + import { REPO_URL } from '../../../../data/constants'; import { useEditModeInformationStore } from '../../../hooks/useEditModeInformation'; import DockerMenuButton from '../../../modules/Docker/DockerModule'; diff --git a/src/components/layout/header/Meta/Head.tsx b/src/components/layout/header/Meta/Head.tsx index d63a61c10..89a79cb70 100644 --- a/src/components/layout/header/Meta/Head.tsx +++ b/src/components/layout/header/Meta/Head.tsx @@ -1,8 +1,9 @@ /* eslint-disable react/no-invalid-html-attribute */ -import React from 'react'; import NextHead from 'next/head'; -import { SafariStatusBarStyle } from './SafariStatusBarStyle'; +import React from 'react'; + import { useConfigContext } from '../../../../config/provider'; +import { SafariStatusBarStyle } from './SafariStatusBarStyle'; export function Head() { const { config } = useConfigContext(); diff --git a/src/components/layout/header/SettingsMenu.tsx b/src/components/layout/header/SettingsMenu.tsx index 51baf13bb..60c835cf2 100644 --- a/src/components/layout/header/SettingsMenu.tsx +++ b/src/components/layout/header/SettingsMenu.tsx @@ -2,6 +2,7 @@ import { Badge, Button, Menu } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { IconInfoCircle, IconMenu2, IconSettings } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { useEditModeInformationStore } from '../../../hooks/useEditModeInformation'; import { AboutModal } from '../../Dashboard/Modals/AboutModal/AboutModal'; import { SettingsDrawer } from '../../Settings/SettingsDrawer'; diff --git a/src/components/layout/header/SettingsMenu/EditModeToggle.tsx b/src/components/layout/header/SettingsMenu/EditModeToggle.tsx index 95fa42612..6e53bd768 100644 --- a/src/components/layout/header/SettingsMenu/EditModeToggle.tsx +++ b/src/components/layout/header/SettingsMenu/EditModeToggle.tsx @@ -4,6 +4,7 @@ import { openModal } from '@mantine/modals'; import { showNotification } from '@mantine/notifications'; import { IconEdit, IconEditOff } from '@tabler/icons-react'; import axios from 'axios'; + import { useEditModeInformationStore } from '../../../../hooks/useEditModeInformation'; function ModalContent() { diff --git a/src/components/layout/useCardStyles.ts b/src/components/layout/useCardStyles.ts index 2c842e422..d08fd1aac 100644 --- a/src/components/layout/useCardStyles.ts +++ b/src/components/layout/useCardStyles.ts @@ -1,4 +1,5 @@ import { createStyles } from '@mantine/core'; + import { useConfigContext } from '../../config/provider'; export const useCardStyles = (isCategory: boolean) => { diff --git a/src/components/layout/useGradient.tsx b/src/components/layout/useGradient.tsx index 13197673d..f63e0e8bd 100644 --- a/src/components/layout/useGradient.tsx +++ b/src/components/layout/useGradient.tsx @@ -1,4 +1,5 @@ import { MantineGradient } from '@mantine/core'; + import { useColorTheme } from '../../tools/color'; export const usePrimaryGradient = (): MantineGradient => { diff --git a/src/config/init.ts b/src/config/init.ts index 7255c7e37..c2d98829c 100644 --- a/src/config/init.ts +++ b/src/config/init.ts @@ -1,4 +1,5 @@ import { useEffect } from 'react'; + import { ConfigType } from '../types/config'; import { useConfigContext } from './provider'; import { useConfigStore } from './store'; diff --git a/src/config/provider.tsx b/src/config/provider.tsx index 672648fd5..1d6803b17 100644 --- a/src/config/provider.tsx +++ b/src/config/provider.tsx @@ -1,5 +1,6 @@ -import { createContext, ReactNode, useContext, useEffect, useState } from 'react'; +import { ReactNode, createContext, useContext, useEffect, useState } from 'react'; import { shallow } from 'zustand/shallow'; + import { useColorTheme } from '../tools/color'; import { ConfigType } from '../types/config'; import { useConfigStore } from './store'; diff --git a/src/config/store.ts b/src/config/store.ts index 6c0a45279..6fa0611af 100644 --- a/src/config/store.ts +++ b/src/config/store.ts @@ -1,5 +1,6 @@ import { create } from 'zustand'; import { trcpProxyClient } from '~/utils/api'; + import { ConfigType } from '../types/config'; export const useConfigStore = create((set, get) => ({ diff --git a/src/hooks/widgets/dashDot/api.ts b/src/hooks/widgets/dashDot/api.ts index c072b3379..6ede6e2b4 100644 --- a/src/hooks/widgets/dashDot/api.ts +++ b/src/hooks/widgets/dashDot/api.ts @@ -1,5 +1,6 @@ import { useConfigContext } from '~/config/provider'; import { RouterInputs, api } from '~/utils/api'; + import { UsenetInfoRequestParams } from '../../../pages/api/modules/usenet'; import type { UsenetHistoryRequestParams } from '../../../pages/api/modules/usenet/history'; import { UsenetPauseRequestParams } from '../../../pages/api/modules/usenet/pause'; diff --git a/src/modules/Docker/ContainerActionBar.tsx b/src/modules/Docker/ContainerActionBar.tsx index 27dc4c400..518fd49df 100644 --- a/src/modules/Docker/ContainerActionBar.tsx +++ b/src/modules/Docker/ContainerActionBar.tsx @@ -15,6 +15,7 @@ import { useTranslation } from 'next-i18next'; import { useState } from 'react'; import { v4 as uuidv4 } from 'uuid'; import { RouterInputs, api } from '~/utils/api'; + import { useConfigContext } from '../../config/provider'; import { openContextModalGeneric } from '../../tools/mantineModalManagerExtensions'; import { MatchingImages, ServiceType, tryMatchPort } from '../../tools/types'; diff --git a/src/modules/Docker/ContainerState.tsx b/src/modules/Docker/ContainerState.tsx index 667f62f61..2f9145bfb 100644 --- a/src/modules/Docker/ContainerState.tsx +++ b/src/modules/Docker/ContainerState.tsx @@ -1,6 +1,6 @@ import { Badge, BadgeProps, MantineSize } from '@mantine/core'; -import { useTranslation } from 'next-i18next'; import Dockerode from 'dockerode'; +import { useTranslation } from 'next-i18next'; export interface ContainerStateProps { state: Dockerode.ContainerInfo['State']; diff --git a/src/modules/Docker/DockerModule.tsx b/src/modules/Docker/DockerModule.tsx index 43917b24a..802b720f5 100644 --- a/src/modules/Docker/DockerModule.tsx +++ b/src/modules/Docker/DockerModule.tsx @@ -4,10 +4,10 @@ import { IconBrandDocker } from '@tabler/icons-react'; import Docker from 'dockerode'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; +import { api } from '~/utils/api'; + import { useCardStyles } from '../../components/layout/useCardStyles'; import { useConfigContext } from '../../config/provider'; - -import { api } from '~/utils/api'; import ContainerActionBar from './ContainerActionBar'; import DockerTable from './DockerTable'; diff --git a/src/modules/Docker/DockerTable.tsx b/src/modules/Docker/DockerTable.tsx index 36e903bca..19d8ba0be 100644 --- a/src/modules/Docker/DockerTable.tsx +++ b/src/modules/Docker/DockerTable.tsx @@ -1,18 +1,19 @@ import { Badge, Checkbox, - createStyles, Group, ScrollArea, Table, Text, TextInput, + createStyles, } from '@mantine/core'; import { useElementSize } from '@mantine/hooks'; import { IconSearch } from '@tabler/icons-react'; import Dockerode from 'dockerode'; import { useTranslation } from 'next-i18next'; import { useEffect, useState } from 'react'; + import { MIN_WIDTH_MOBILE } from '../../constants/constants'; import ContainerState from './ContainerState'; diff --git a/src/modules/common/MediaDisplay.tsx b/src/modules/common/MediaDisplay.tsx index 6228e528d..e191286d6 100644 --- a/src/modules/common/MediaDisplay.tsx +++ b/src/modules/common/MediaDisplay.tsx @@ -2,6 +2,7 @@ import { Badge, Button, Group, Image, Stack, Text, Title } from '@mantine/core'; import { IconDownload, IconExternalLink, IconPlayerPlay } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; + import { useConfigContext } from '../../config/provider'; import { useColorTheme } from '../../tools/color'; import { RequestModal } from '../overseerr/RequestModal'; diff --git a/src/modules/overseerr/OverseerrModule.tsx b/src/modules/overseerr/OverseerrModule.tsx index 6e6361aad..9e466ce52 100644 --- a/src/modules/overseerr/OverseerrModule.tsx +++ b/src/modules/overseerr/OverseerrModule.tsx @@ -1,6 +1,7 @@ import { IconEyeglass } from '@tabler/icons-react'; -import { OverseerrMediaDisplay } from '../common'; + import { IModule } from '../ModuleTypes'; +import { OverseerrMediaDisplay } from '../common'; export const OverseerrModule: IModule = { title: 'Overseerr', diff --git a/src/modules/overseerr/RequestModal.tsx b/src/modules/overseerr/RequestModal.tsx index 227ab0e73..523263cd8 100644 --- a/src/modules/overseerr/RequestModal.tsx +++ b/src/modules/overseerr/RequestModal.tsx @@ -1,12 +1,12 @@ -import { Alert, Button, Checkbox, createStyles, Group, Modal, Stack, Table } from '@mantine/core'; +import { Alert, Button, Checkbox, Group, Modal, Stack, Table, createStyles } from '@mantine/core'; import { showNotification, updateNotification } from '@mantine/notifications'; import { IconAlertCircle, IconCheck, IconDownload } from '@tabler/icons-react'; import Consola from 'consola'; import { useTranslation } from 'next-i18next'; - import { useState } from 'react'; import { useConfigContext } from '~/config/provider'; import { api } from '~/utils/api'; + import { useColorTheme } from '../../tools/color'; import { MovieResult } from './Movie.d'; import { Result } from './SearchResult.d'; diff --git a/src/pages/404.tsx b/src/pages/404.tsx index 0f49c2aa5..42576194f 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -1,16 +1,16 @@ import { Button, Container, - createStyles, Group, Text, Title, + createStyles, useMantineTheme, } from '@mantine/core'; -import React from 'react'; - import { GetServerSidePropsContext } from 'next'; import Link from 'next/link'; +import React from 'react'; + import { getServerSideTranslations } from '../tools/server/getServerSideTranslations'; const useStyles = createStyles((theme) => ({ diff --git a/src/pages/[slug].tsx b/src/pages/[slug].tsx index 52d2aaade..4693f9175 100644 --- a/src/pages/[slug].tsx +++ b/src/pages/[slug].tsx @@ -2,6 +2,7 @@ import { setCookie } from 'cookies-next'; import fs from 'fs'; import { GetServerSidePropsContext } from 'next'; import path from 'path'; + import { LoadConfigComponent } from '../components/Config/LoadConfig'; import { Dashboard } from '../components/Dashboard/Dashboard'; import Layout from '../components/layout/Layout'; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 7536e6748..37ed1a412 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,19 +1,22 @@ import { ColorScheme, ColorSchemeProvider, MantineProvider, MantineTheme } from '@mantine/core'; import { useColorScheme, useHotkeys, useLocalStorage } from '@mantine/hooks'; import { ModalsProvider } from '@mantine/modals'; -import Consola from 'consola'; +import { Notifications } from '@mantine/notifications'; +import AsyncStorage from '@react-native-async-storage/async-storage'; +import { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; +import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client'; +import Consola from 'consola'; import { getCookie } from 'cookies-next'; import { GetServerSidePropsContext } from 'next'; import { appWithTranslation } from 'next-i18next'; import { AppProps } from 'next/app'; import Head from 'next/head'; import { useEffect, useState } from 'react'; -import { Notifications } from '@mantine/notifications'; import 'video.js/dist/video-js.css'; -import AsyncStorage from '@react-native-async-storage/async-storage'; -import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client'; -import { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister'; +import { api } from '~/utils/api'; + +import nextI18nextConfig from '../../next-i18next.config'; import { ChangeAppPositionModal } from '../components/Dashboard/Modals/ChangePosition/ChangeAppPositionModal'; import { ChangeWidgetPositionModal } from '../components/Dashboard/Modals/ChangePosition/ChangeWidgetPositionModal'; import { EditAppModal } from '../components/Dashboard/Modals/EditAppModal/EditAppModal'; @@ -22,20 +25,17 @@ import { WidgetsEditModal } from '../components/Dashboard/Tiles/Widgets/WidgetsE import { WidgetsRemoveModal } from '../components/Dashboard/Tiles/Widgets/WidgetsRemoveModal'; import { CategoryEditModal } from '../components/Dashboard/Wrappers/Category/CategoryEditModal'; import { ConfigProvider } from '../config/provider'; +import { useEditModeInformationStore } from '../hooks/useEditModeInformation'; +import '../styles/global.scss'; import { usePackageAttributesStore } from '../tools/client/zustands/usePackageAttributesStore'; import { ColorTheme } from '../tools/color'; import { queryClient } from '../tools/server/configurations/tanstack/queryClient.tool'; import { - getServiceSidePackageAttributes, ServerSidePackageAttributesType, + getServiceSidePackageAttributes, } from '../tools/server/getPackageVersion'; import { theme } from '../tools/server/theme/theme'; -import { useEditModeInformationStore } from '../hooks/useEditModeInformation'; -import '../styles/global.scss'; -import nextI18nextConfig from '../../next-i18next.config'; -import { api } from '~/utils/api'; - function App( this: any, props: AppProps<{ diff --git a/src/pages/api/configs/[slug].ts b/src/pages/api/configs/[slug].ts index c33cfad20..243c43183 100644 --- a/src/pages/api/configs/[slug].ts +++ b/src/pages/api/configs/[slug].ts @@ -1,10 +1,7 @@ -import fs from 'fs'; - -import path from 'path'; - import Consola from 'consola'; - +import fs from 'fs'; import { NextApiRequest, NextApiResponse } from 'next'; +import path from 'path'; import { getConfig } from '../../../tools/config/getConfig'; import { BackendConfigType, ConfigType } from '../../../types/config'; diff --git a/src/pages/api/configs/index.ts b/src/pages/api/configs/index.ts index f582b7855..ded6b0067 100644 --- a/src/pages/api/configs/index.ts +++ b/src/pages/api/configs/index.ts @@ -1,5 +1,5 @@ -import { NextApiRequest, NextApiResponse } from 'next'; import fs from 'fs'; +import { NextApiRequest, NextApiResponse } from 'next'; function Get(req: NextApiRequest, res: NextApiResponse) { // Get all the configs in the /data/configs folder diff --git a/src/pages/api/docker/container/[id].tsx b/src/pages/api/docker/container/[id].tsx index 1a6fb7602..6853f6517 100644 --- a/src/pages/api/docker/container/[id].tsx +++ b/src/pages/api/docker/container/[id].tsx @@ -1,4 +1,5 @@ import { NextApiRequest, NextApiResponse } from 'next'; + import DockerSingleton from '../DockerSingleton'; const docker = DockerSingleton.getInstance(); diff --git a/src/pages/api/docker/containers.tsx b/src/pages/api/docker/containers.tsx index 2b1fd0dff..a198c33df 100644 --- a/src/pages/api/docker/containers.tsx +++ b/src/pages/api/docker/containers.tsx @@ -1,4 +1,5 @@ import { NextApiRequest, NextApiResponse } from 'next'; + import DockerSingleton from './DockerSingleton'; async function Get(req: NextApiRequest, res: NextApiResponse) { diff --git a/src/pages/api/icons/index.ts b/src/pages/api/icons/index.ts index 9649f9cbe..38d0eab0b 100644 --- a/src/pages/api/icons/index.ts +++ b/src/pages/api/icons/index.ts @@ -1,4 +1,5 @@ import { NextApiRequest, NextApiResponse } from 'next'; + import { JsdelivrIconsRepository } from '../../../tools/server/images/jsdelivr-icons-repository'; import { LocalIconsRepository } from '../../../tools/server/images/local-icons-repository'; import { UnpkgIconsRepository } from '../../../tools/server/images/unpkg-icons-repository'; diff --git a/src/pages/api/migrate.ts b/src/pages/api/migrate.ts index 379b7c724..b0bb1cb1a 100644 --- a/src/pages/api/migrate.ts +++ b/src/pages/api/migrate.ts @@ -1,5 +1,6 @@ -import { NextApiRequest, NextApiResponse } from 'next'; import fs from 'fs'; +import { NextApiRequest, NextApiResponse } from 'next'; + import { backendMigrateConfig } from '../../tools/config/backendMigrateConfig'; export default async (req: NextApiRequest, res: NextApiResponse) => { diff --git a/src/pages/api/modules/calendar.ts b/src/pages/api/modules/calendar.ts index 3f0169ec3..76c289dd1 100644 --- a/src/pages/api/modules/calendar.ts +++ b/src/pages/api/modules/calendar.ts @@ -1,14 +1,12 @@ import axios from 'axios'; - import Consola from 'consola'; - import { NextApiRequest, NextApiResponse } from 'next'; - import { z } from 'zod'; -import { AppIntegrationType, IntegrationType } from '../../../types/app'; -import { getConfig } from '../../../tools/config/getConfig'; import { checkIntegrationsType } from '~/tools/client/app-properties'; +import { getConfig } from '../../../tools/config/getConfig'; +import { AppIntegrationType, IntegrationType } from '../../../types/app'; + export default async (req: NextApiRequest, res: NextApiResponse) => { // Filter out if the reuqest is a POST or a GET if (req.method === 'GET') { diff --git a/src/pages/api/modules/dashdot/info.ts b/src/pages/api/modules/dashdot/info.ts index 83f8cc341..76f93ad98 100644 --- a/src/pages/api/modules/dashdot/info.ts +++ b/src/pages/api/modules/dashdot/info.ts @@ -1,6 +1,7 @@ import axios from 'axios'; import { NextApiRequest, NextApiResponse } from 'next'; import { z } from 'zod'; + import { getConfig } from '../../../../tools/config/getConfig'; import { IDashDotTile } from '../../../../widgets/dashDot/DashDotTile'; diff --git a/src/pages/api/modules/dashdot/storage.ts b/src/pages/api/modules/dashdot/storage.ts index 30b188c30..feefd58c5 100644 --- a/src/pages/api/modules/dashdot/storage.ts +++ b/src/pages/api/modules/dashdot/storage.ts @@ -1,6 +1,7 @@ import axios from 'axios'; import { NextApiRequest, NextApiResponse } from 'next'; import { z } from 'zod'; + import { getConfig } from '../../../../tools/config/getConfig'; import { IDashDotTile } from '../../../../widgets/dashDot/DashDotTile'; diff --git a/src/pages/api/modules/dns-hole/summary.spec.ts b/src/pages/api/modules/dns-hole/summary.spec.ts index 05470be69..cccd09460 100644 --- a/src/pages/api/modules/dns-hole/summary.spec.ts +++ b/src/pages/api/modules/dns-hole/summary.spec.ts @@ -1,9 +1,9 @@ import Consola from 'consola'; -import { describe, it, vi, expect } from 'vitest'; import { createMocks } from 'node-mocks-http'; +import { describe, expect, it, vi } from 'vitest'; -import GetSummary from './summary'; import { ConfigType } from '../../../../types/config'; +import GetSummary from './summary'; const mockedGetConfig = vi.fn(); diff --git a/src/pages/api/modules/downloads/index.ts b/src/pages/api/modules/downloads/index.ts index 442da77d5..107524a91 100644 --- a/src/pages/api/modules/downloads/index.ts +++ b/src/pages/api/modules/downloads/index.ts @@ -1,28 +1,23 @@ import { Deluge } from '@ctrl/deluge'; import { QBittorrent } from '@ctrl/qbittorrent'; -import { Transmission } from '@ctrl/transmission'; import { AllClientData } from '@ctrl/shared-torrent'; - +import { Transmission } from '@ctrl/transmission'; import Consola from 'consola'; - import { getCookie } from 'cookies-next'; - import dayjs from 'dayjs'; - import { NextApiRequest, NextApiResponse } from 'next'; - import { Client } from 'sabnzbd-api'; +import { findAppProperty } from '~/tools/client/app-properties'; import { NzbgetClient } from '../../../../server/api/routers/usenet/nzbget/nzbget-client'; import { NzbgetQueueItem, NzbgetStatus } from '../../../../server/api/routers/usenet/nzbget/types'; -import { ConfigAppType, IntegrationField } from '../../../../types/app'; import { getConfig } from '../../../../tools/config/getConfig'; -import { UsenetQueueItem } from '../../../../widgets/useNet/types'; import { NormalizedDownloadAppStat, NormalizedDownloadQueueResponse, } from '../../../../types/api/downloads/queue/NormalizedDownloadQueueResponse'; -import { findAppProperty } from '~/tools/client/app-properties'; +import { ConfigAppType, IntegrationField } from '../../../../types/app'; +import { UsenetQueueItem } from '../../../../widgets/useNet/types'; const Get = async (request: NextApiRequest, response: NextApiResponse) => { const configName = getCookie('config-name', { req: request }); diff --git a/src/pages/api/modules/media-requests/index.spec.ts b/src/pages/api/modules/media-requests/index.spec.ts index 0365c2820..d8b79a736 100644 --- a/src/pages/api/modules/media-requests/index.spec.ts +++ b/src/pages/api/modules/media-requests/index.spec.ts @@ -1,13 +1,9 @@ import Consola from 'consola'; - import { createMocks } from 'node-mocks-http'; - import { describe, expect, it, vi } from 'vitest'; - import 'vitest-fetch-mock'; import { ConfigType } from '../../../../types/config'; - import MediaRequestsRoute from './index'; const mockedGetConfig = vi.fn(); diff --git a/src/pages/api/modules/media-requests/index.ts b/src/pages/api/modules/media-requests/index.ts index 9e9c0e866..ff39ba513 100644 --- a/src/pages/api/modules/media-requests/index.ts +++ b/src/pages/api/modules/media-requests/index.ts @@ -1,12 +1,12 @@ -import { getCookie } from 'cookies-next'; import Consola from 'consola'; +import { getCookie } from 'cookies-next'; import { NextApiRequest, NextApiResponse } from 'next'; -import { getConfig } from '../../../../tools/config/getConfig'; - -import { MediaRequest } from '../../../../widgets/media-requests/media-request-types'; -import { MediaRequestListWidget } from '../../../../widgets/media-requests/MediaRequestListTile'; import { checkIntegrationsType } from '~/tools/client/app-properties'; +import { getConfig } from '../../../../tools/config/getConfig'; +import { MediaRequestListWidget } from '../../../../widgets/media-requests/MediaRequestListTile'; +import { MediaRequest } from '../../../../widgets/media-requests/media-request-types'; + const Get = async (request: NextApiRequest, response: NextApiResponse) => { const configName = getCookie('config-name', { req: request }); const config = getConfig(configName?.toString() ?? 'default'); diff --git a/src/pages/api/modules/media-server/index.ts b/src/pages/api/modules/media-server/index.ts index f1bee1f55..8dcc10423 100644 --- a/src/pages/api/modules/media-server/index.ts +++ b/src/pages/api/modules/media-server/index.ts @@ -1,24 +1,21 @@ import { Jellyfin } from '@jellyfin/sdk'; +import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models'; import { getSessionApi } from '@jellyfin/sdk/lib/utils/api/session-api'; import { getSystemApi } from '@jellyfin/sdk/lib/utils/api/system-api'; -import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models'; - import Consola from 'consola'; - import { getCookie } from 'cookies-next'; - import { NextApiRequest, NextApiResponse } from 'next'; +import { checkIntegrationsType, findAppProperty } from '~/tools/client/app-properties'; -import { ConfigAppType } from '../../../../types/app'; import { getConfig } from '../../../../tools/config/getConfig'; +import { PlexClient } from '../../../../tools/server/sdk/plex/plexClient'; import { GenericMediaServer } from '../../../../types/api/media-server/media-server'; import { MediaServersResponseType } from '../../../../types/api/media-server/response'; import { GenericCurrentlyPlaying, GenericSessionInfo, } from '../../../../types/api/media-server/session-info'; -import { PlexClient } from '../../../../tools/server/sdk/plex/plexClient'; -import { checkIntegrationsType, findAppProperty } from '~/tools/client/app-properties'; +import { ConfigAppType } from '../../../../types/app'; const jellyfin = new Jellyfin({ clientInfo: { diff --git a/src/pages/api/modules/overseerr/[id].tsx b/src/pages/api/modules/overseerr/[id].tsx index 0335fc5fa..2fc9a31c4 100644 --- a/src/pages/api/modules/overseerr/[id].tsx +++ b/src/pages/api/modules/overseerr/[id].tsx @@ -1,9 +1,10 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import { getCookie } from 'cookies-next'; import axios from 'axios'; import Consola from 'consola'; -import { getConfig } from '../../../../tools/config/getConfig'; +import { getCookie } from 'cookies-next'; +import { NextApiRequest, NextApiResponse } from 'next'; + import type { MediaType } from '../../../../modules/overseerr/SearchResult'; +import { getConfig } from '../../../../tools/config/getConfig'; async function Get(req: NextApiRequest, res: NextApiResponse) { // Get the slug of the request diff --git a/src/pages/api/modules/overseerr/index.ts b/src/pages/api/modules/overseerr/index.ts index 321cf9afa..80d91a76e 100644 --- a/src/pages/api/modules/overseerr/index.ts +++ b/src/pages/api/modules/overseerr/index.ts @@ -1,6 +1,7 @@ import axios from 'axios'; import { getCookie } from 'cookies-next'; import { NextApiRequest, NextApiResponse } from 'next'; + import { getConfig } from '../../../../tools/config/getConfig'; async function Get(req: NextApiRequest, res: NextApiResponse) { diff --git a/src/pages/api/modules/ping.ts b/src/pages/api/modules/ping.ts index 11f43abdc..4b2c13bea 100644 --- a/src/pages/api/modules/ping.ts +++ b/src/pages/api/modules/ping.ts @@ -1,6 +1,6 @@ import axios, { AxiosError } from 'axios'; -import https from 'https'; import Consola from 'consola'; +import https from 'https'; import { NextApiRequest, NextApiResponse } from 'next'; async function Get(req: NextApiRequest, res: NextApiResponse) { diff --git a/src/pages/api/modules/rss/index.ts b/src/pages/api/modules/rss/index.ts index 84fedb77e..6167f470f 100644 --- a/src/pages/api/modules/rss/index.ts +++ b/src/pages/api/modules/rss/index.ts @@ -1,9 +1,9 @@ -import xss from 'xss'; -import { NextApiRequest, NextApiResponse } from 'next'; import Consola from 'consola'; import { getCookie } from 'cookies-next'; import { decode, encode } from 'html-entities'; +import { NextApiRequest, NextApiResponse } from 'next'; import Parser from 'rss-parser'; +import xss from 'xss'; import { z } from 'zod'; import { getConfig } from '../../../../tools/config/getConfig'; diff --git a/src/pages/api/modules/usenet/history.ts b/src/pages/api/modules/usenet/history.ts index 5f3169706..61ca1ebbb 100644 --- a/src/pages/api/modules/usenet/history.ts +++ b/src/pages/api/modules/usenet/history.ts @@ -3,11 +3,12 @@ import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { NextApiRequest, NextApiResponse } from 'next'; import { Client } from 'sabnzbd-api'; -import { NzbgetHistoryItem } from '../../../../server/api/routers/usenet/nzbget/types'; +import { findAppProperty } from '~/tools/client/app-properties'; + import { NzbgetClient } from '../../../../server/api/routers/usenet/nzbget/nzbget-client'; +import { NzbgetHistoryItem } from '../../../../server/api/routers/usenet/nzbget/types'; import { getConfig } from '../../../../tools/config/getConfig'; import { UsenetHistoryItem } from '../../../../widgets/useNet/types'; -import { findAppProperty } from '~/tools/client/app-properties'; dayjs.extend(duration); diff --git a/src/pages/api/modules/usenet/index.ts b/src/pages/api/modules/usenet/index.ts index 13f84b0f8..78ca460b4 100644 --- a/src/pages/api/modules/usenet/index.ts +++ b/src/pages/api/modules/usenet/index.ts @@ -3,10 +3,11 @@ import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { NextApiRequest, NextApiResponse } from 'next'; import { Client } from 'sabnzbd-api'; -import { getConfig } from '../../../../tools/config/getConfig'; +import { findAppProperty } from '~/tools/client/app-properties'; + import { NzbgetClient } from '../../../../server/api/routers/usenet/nzbget/nzbget-client'; import { NzbgetStatus } from '../../../../server/api/routers/usenet/nzbget/types'; -import { findAppProperty } from '~/tools/client/app-properties'; +import { getConfig } from '../../../../tools/config/getConfig'; dayjs.extend(duration); diff --git a/src/pages/api/modules/usenet/pause.ts b/src/pages/api/modules/usenet/pause.ts index c6d4fe1f3..65fbf04d4 100644 --- a/src/pages/api/modules/usenet/pause.ts +++ b/src/pages/api/modules/usenet/pause.ts @@ -3,10 +3,11 @@ import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { NextApiRequest, NextApiResponse } from 'next'; import { Client } from 'sabnzbd-api'; -import { getConfig } from '../../../../tools/config/getConfig'; -import { NzbgetClient } from '../../../../server/api/routers/usenet/nzbget/nzbget-client'; import { findAppProperty } from '~/tools/client/app-properties'; +import { NzbgetClient } from '../../../../server/api/routers/usenet/nzbget/nzbget-client'; +import { getConfig } from '../../../../tools/config/getConfig'; + dayjs.extend(duration); export interface UsenetPauseRequestParams { diff --git a/src/pages/api/modules/usenet/queue.ts b/src/pages/api/modules/usenet/queue.ts index c52c59fc6..b5cc95f85 100644 --- a/src/pages/api/modules/usenet/queue.ts +++ b/src/pages/api/modules/usenet/queue.ts @@ -3,11 +3,12 @@ import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { NextApiRequest, NextApiResponse } from 'next'; import { Client } from 'sabnzbd-api'; -import { getConfig } from '../../../../tools/config/getConfig'; -import { UsenetQueueItem } from '../../../../widgets/useNet/types'; +import { findAppProperty } from '~/tools/client/app-properties'; + import { NzbgetClient } from '../../../../server/api/routers/usenet/nzbget/nzbget-client'; import { NzbgetQueueItem, NzbgetStatus } from '../../../../server/api/routers/usenet/nzbget/types'; -import { findAppProperty } from '~/tools/client/app-properties'; +import { getConfig } from '../../../../tools/config/getConfig'; +import { UsenetQueueItem } from '../../../../widgets/useNet/types'; dayjs.extend(duration); diff --git a/src/pages/api/modules/usenet/resume.ts b/src/pages/api/modules/usenet/resume.ts index 7df66b824..245fb0ac8 100644 --- a/src/pages/api/modules/usenet/resume.ts +++ b/src/pages/api/modules/usenet/resume.ts @@ -3,10 +3,11 @@ import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { NextApiRequest, NextApiResponse } from 'next'; import { Client } from 'sabnzbd-api'; -import { getConfig } from '../../../../tools/config/getConfig'; -import { NzbgetClient } from '../../../../server/api/routers/usenet/nzbget/nzbget-client'; import { findAppProperty } from '~/tools/client/app-properties'; +import { NzbgetClient } from '../../../../server/api/routers/usenet/nzbget/nzbget-client'; +import { getConfig } from '../../../../tools/config/getConfig'; + dayjs.extend(duration); export interface UsenetResumeRequestParams { diff --git a/src/pages/api/trpc/[trpc].ts b/src/pages/api/trpc/[trpc].ts index 4779613ba..d3f7428f9 100644 --- a/src/pages/api/trpc/[trpc].ts +++ b/src/pages/api/trpc/[trpc].ts @@ -1,7 +1,7 @@ import { createNextApiHandler } from '@trpc/server/adapters/next'; import Consola from 'consola'; -import { createTRPCContext } from '~/server/api/trpc'; import { rootRouter } from '~/server/api/root'; +import { createTRPCContext } from '~/server/api/trpc'; // export API handler export default createNextApiHandler({ diff --git a/src/pages/login.tsx b/src/pages/login.tsx index e9f6ae871..3d2642c7e 100644 --- a/src/pages/login.tsx +++ b/src/pages/login.tsx @@ -1,13 +1,14 @@ -import React from 'react'; -import { PasswordInput, Paper, Title, Text, Container, Button } from '@mantine/core'; -import { setCookie } from 'cookies-next'; -import { showNotification, updateNotification } from '@mantine/notifications'; -import axios from 'axios'; -import { IconCheck, IconX } from '@tabler/icons-react'; -import { useRouter } from 'next/router'; -import { useTranslation } from 'next-i18next'; +import { Button, Container, Paper, PasswordInput, Text, Title } from '@mantine/core'; import { useForm } from '@mantine/form'; +import { showNotification, updateNotification } from '@mantine/notifications'; +import { IconCheck, IconX } from '@tabler/icons-react'; +import axios from 'axios'; +import { setCookie } from 'cookies-next'; +import { useTranslation } from 'next-i18next'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { useRouter } from 'next/router'; +import React from 'react'; + import { loginNamespaces } from '../tools/server/translation-namespaces'; // TODO: Add links to the wiki articles about the login process. diff --git a/src/pages/migrate.tsx b/src/pages/migrate.tsx index f9d487884..9b13a79b8 100644 --- a/src/pages/migrate.tsx +++ b/src/pages/migrate.tsx @@ -1,8 +1,3 @@ -import fs from 'fs'; -import { GetServerSidePropsContext } from 'next'; -import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; -import React, { useEffect, useState } from 'react'; - import { Alert, Anchor, @@ -11,7 +6,6 @@ import { Box, Button, Container, - createStyles, Group, Header, List, @@ -25,6 +19,7 @@ import { Text, ThemeIcon, Title, + createStyles, useMantineColorScheme, useMantineTheme, } from '@mantine/core'; @@ -36,8 +31,13 @@ import { IconMoonStars, IconSun, } from '@tabler/icons-react'; -import { motion } from 'framer-motion'; import axios from 'axios'; +import { motion } from 'framer-motion'; +import fs from 'fs'; +import { GetServerSidePropsContext } from 'next'; +import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import React, { useEffect, useState } from 'react'; + import { Logo } from '../components/layout/Logo'; import { usePrimaryGradient } from '../components/layout/useGradient'; diff --git a/src/server/api/root.ts b/src/server/api/root.ts index 4b02b83b4..ced44f718 100644 --- a/src/server/api/root.ts +++ b/src/server/api/root.ts @@ -1,17 +1,18 @@ import { createTRPCRouter } from '~/server/api/trpc'; + import { appRouter } from './routers/app'; -import { rssRouter } from './routers/rss'; +import { calendarRouter } from './routers/calendar'; import { configRouter } from './routers/config'; -import { dockerRouter } from './routers/docker/router'; -import { iconRouter } from './routers/icon'; import { dashDotRouter } from './routers/dash-dot'; import { dnsHoleRouter } from './routers/dns-hole'; +import { dockerRouter } from './routers/docker/router'; import { downloadRouter } from './routers/download'; +import { iconRouter } from './routers/icon'; import { mediaRequestsRouter } from './routers/media-request'; import { mediaServerRouter } from './routers/media-server'; import { overseerrRouter } from './routers/overseerr'; +import { rssRouter } from './routers/rss'; import { usenetRouter } from './routers/usenet/router'; -import { calendarRouter } from './routers/calendar'; import { weatherRouter } from './routers/weather'; /** diff --git a/src/server/api/routers/app.ts b/src/server/api/routers/app.ts index 3b00bfd4b..17a4ae06d 100644 --- a/src/server/api/routers/app.ts +++ b/src/server/api/routers/app.ts @@ -11,9 +11,9 @@ import { AppType } from '~/types/app'; import { createTRPCRouter, publicProcedure } from '../trpc'; const errorResponse = { - state: 'offline', - status: 500, - statusText: 'Check logs for more informations', + state: 'offline', + status: 500, + statusText: 'Check logs for more informations', }; export const appRouter = createTRPCRouter({ diff --git a/src/server/api/routers/calendar.ts b/src/server/api/routers/calendar.ts index 2b83a6d79..0ecaff0bc 100644 --- a/src/server/api/routers/calendar.ts +++ b/src/server/api/routers/calendar.ts @@ -1,10 +1,11 @@ import axios from 'axios'; import Consola from 'consola'; import { z } from 'zod'; +import { checkIntegrationsType } from '~/tools/client/app-properties'; import { getConfig } from '~/tools/config/getConfig'; import { AppIntegrationType, IntegrationType } from '~/types/app'; + import { createTRPCRouter, publicProcedure } from '../trpc'; -import { checkIntegrationsType } from '~/tools/client/app-properties'; export const calendarRouter = createTRPCRouter({ medias: publicProcedure diff --git a/src/server/api/routers/config.ts b/src/server/api/routers/config.ts index eda6361f9..f2d9ee94a 100644 --- a/src/server/api/routers/config.ts +++ b/src/server/api/routers/config.ts @@ -1,13 +1,14 @@ +import { TRPCError } from '@trpc/server'; +import Consola from 'consola'; import fs from 'fs'; import path from 'path'; -import Consola from 'consola'; import { z } from 'zod'; -import { TRPCError } from '@trpc/server'; -import { createTRPCRouter, publicProcedure } from '../trpc'; import { BackendConfigType, ConfigType } from '~/types/config'; -import { getConfig } from '../../../tools/config/getConfig'; import { IRssWidget } from '~/widgets/rss/RssWidgetTile'; +import { getConfig } from '../../../tools/config/getConfig'; +import { createTRPCRouter, publicProcedure } from '../trpc'; + export const configRouter = createTRPCRouter({ all: publicProcedure.query(async () => { // Get all the configs in the /data/configs folder diff --git a/src/server/api/routers/dash-dot.ts b/src/server/api/routers/dash-dot.ts index 74090bea5..bafa5c83b 100644 --- a/src/server/api/routers/dash-dot.ts +++ b/src/server/api/routers/dash-dot.ts @@ -1,6 +1,7 @@ +import { TRPCError } from '@trpc/server'; import axios from 'axios'; import { z } from 'zod'; -import { TRPCError } from '@trpc/server'; + import { createTRPCRouter, publicProcedure } from '../trpc'; const dashDotUrlSchema = z.string().url(); diff --git a/src/server/api/routers/docker/router.ts b/src/server/api/routers/docker/router.ts index 6dfaeea02..b1fb5fa78 100644 --- a/src/server/api/routers/docker/router.ts +++ b/src/server/api/routers/docker/router.ts @@ -1,6 +1,7 @@ import { TRPCError } from '@trpc/server'; -import { z } from 'zod'; import Dockerode from 'dockerode'; +import { z } from 'zod'; + import { createTRPCRouter, publicProcedure } from '../../trpc'; import DockerSingleton from './DockerSingleton'; diff --git a/src/server/api/routers/download.ts b/src/server/api/routers/download.ts index 654a58f88..567e097bd 100644 --- a/src/server/api/routers/download.ts +++ b/src/server/api/routers/download.ts @@ -8,6 +8,7 @@ import { Client } from 'sabnzbd-api'; import { z } from 'zod'; import { NzbgetClient } from '~/server/api/routers/usenet/nzbget/nzbget-client'; import { NzbgetQueueItem, NzbgetStatus } from '~/server/api/routers/usenet/nzbget/types'; +import { findAppProperty } from '~/tools/client/app-properties'; import { getConfig } from '~/tools/config/getConfig'; import { NormalizedDownloadAppStat, @@ -15,8 +16,8 @@ import { } from '~/types/api/downloads/queue/NormalizedDownloadQueueResponse'; import { ConfigAppType, IntegrationField } from '~/types/app'; import { UsenetQueueItem } from '~/widgets/useNet/types'; + import { createTRPCRouter, publicProcedure } from '../trpc'; -import { findAppProperty } from '~/tools/client/app-properties'; export const downloadRouter = createTRPCRouter({ get: publicProcedure diff --git a/src/server/api/routers/icon.ts b/src/server/api/routers/icon.ts index f3320775d..f53800d17 100644 --- a/src/server/api/routers/icon.ts +++ b/src/server/api/routers/icon.ts @@ -1,8 +1,9 @@ -import { LocalIconsRepository } from '~/tools/server/images/local-icons-repository'; -import { createTRPCRouter, publicProcedure } from '../trpc'; import { JsdelivrIconsRepository } from '~/tools/server/images/jsdelivr-icons-repository'; +import { LocalIconsRepository } from '~/tools/server/images/local-icons-repository'; import { UnpkgIconsRepository } from '~/tools/server/images/unpkg-icons-repository'; +import { createTRPCRouter, publicProcedure } from '../trpc'; + export const iconRouter = createTRPCRouter({ all: publicProcedure.query(async () => { const respositories = [ diff --git a/src/server/api/routers/media-request.ts b/src/server/api/routers/media-request.ts index c68227730..e0ecefeb0 100644 --- a/src/server/api/routers/media-request.ts +++ b/src/server/api/routers/media-request.ts @@ -1,10 +1,11 @@ import Consola from 'consola'; import { z } from 'zod'; -import { getConfig } from '~/tools/config/getConfig'; -import { MediaRequest } from '~/widgets/media-requests/media-request-types'; -import { createTRPCRouter, publicProcedure } from '../trpc'; -import { MediaRequestListWidget } from '~/widgets/media-requests/MediaRequestListTile'; import { checkIntegrationsType } from '~/tools/client/app-properties'; +import { getConfig } from '~/tools/config/getConfig'; +import { MediaRequestListWidget } from '~/widgets/media-requests/MediaRequestListTile'; +import { MediaRequest } from '~/widgets/media-requests/media-request-types'; + +import { createTRPCRouter, publicProcedure } from '../trpc'; export const mediaRequestsRouter = createTRPCRouter({ all: publicProcedure diff --git a/src/server/api/routers/media-server.ts b/src/server/api/routers/media-server.ts index 7a70a76d7..64df92178 100644 --- a/src/server/api/routers/media-server.ts +++ b/src/server/api/routers/media-server.ts @@ -4,14 +4,15 @@ import { getSessionApi } from '@jellyfin/sdk/lib/utils/api/session-api'; import { getSystemApi } from '@jellyfin/sdk/lib/utils/api/system-api'; import Consola from 'consola'; import { z } from 'zod'; +import { checkIntegrationsType, findAppProperty } from '~/tools/client/app-properties'; import { getConfig } from '~/tools/config/getConfig'; import { PlexClient } from '~/tools/server/sdk/plex/plexClient'; import { GenericMediaServer } from '~/types/api/media-server/media-server'; import { MediaServersResponseType } from '~/types/api/media-server/response'; import { GenericCurrentlyPlaying, GenericSessionInfo } from '~/types/api/media-server/session-info'; import { ConfigAppType } from '~/types/app'; + import { createTRPCRouter, publicProcedure } from '../trpc'; -import { checkIntegrationsType, findAppProperty } from '~/tools/client/app-properties'; const jellyfin = new Jellyfin({ clientInfo: { diff --git a/src/server/api/routers/overseerr.ts b/src/server/api/routers/overseerr.ts index 1671cfef5..3809d5d1e 100644 --- a/src/server/api/routers/overseerr.ts +++ b/src/server/api/routers/overseerr.ts @@ -1,11 +1,12 @@ import { TRPCError } from '@trpc/server'; import axios from 'axios'; -import { z } from 'zod'; import Consola from 'consola'; -import { getConfig } from '~/tools/config/getConfig'; -import { createTRPCRouter, publicProcedure } from '../trpc'; +import { z } from 'zod'; import { MovieResult } from '~/modules/overseerr/Movie'; import { TvShowResult } from '~/modules/overseerr/TvShow'; +import { getConfig } from '~/tools/config/getConfig'; + +import { createTRPCRouter, publicProcedure } from '../trpc'; export const overseerrRouter = createTRPCRouter({ all: publicProcedure diff --git a/src/server/api/routers/rss.ts b/src/server/api/routers/rss.ts index 35a27be6b..45e136137 100644 --- a/src/server/api/routers/rss.ts +++ b/src/server/api/routers/rss.ts @@ -7,6 +7,7 @@ import { z } from 'zod'; import { getConfig } from '~/tools/config/getConfig'; import { Stopwatch } from '~/tools/shared/time/stopwatch.tool'; import { IRssWidget } from '~/widgets/rss/RssWidgetTile'; + import { createTRPCRouter, publicProcedure } from '../trpc'; type CustomItem = { diff --git a/src/server/api/routers/usenet/nzbget/nzbget-client.ts b/src/server/api/routers/usenet/nzbget/nzbget-client.ts index ef614dd57..7d77c4cda 100644 --- a/src/server/api/routers/usenet/nzbget/nzbget-client.ts +++ b/src/server/api/routers/usenet/nzbget/nzbget-client.ts @@ -1,4 +1,5 @@ import NZBGet from 'nzbget-api'; + import { NzbgetClientOptions } from './types'; export function NzbgetClient(options: NzbgetClientOptions) { diff --git a/src/server/api/routers/usenet/router.ts b/src/server/api/routers/usenet/router.ts index 5b5a8d93a..c0f7ee487 100644 --- a/src/server/api/routers/usenet/router.ts +++ b/src/server/api/routers/usenet/router.ts @@ -7,11 +7,12 @@ import { NzbgetQueueItem, NzbgetStatus, } from '~/server/api/routers/usenet/nzbget/types'; +import { checkIntegrationsType, findAppProperty } from '~/tools/client/app-properties'; import { getConfig } from '~/tools/config/getConfig'; import { UsenetHistoryItem, UsenetQueueItem } from '~/widgets/useNet/types'; + import { createTRPCRouter, publicProcedure } from '../../trpc'; import { NzbgetClient } from './nzbget/nzbget-client'; -import { checkIntegrationsType, findAppProperty } from '~/tools/client/app-properties'; export const usenetRouter = createTRPCRouter({ info: publicProcedure diff --git a/src/server/api/routers/weather.ts b/src/server/api/routers/weather.ts index b2d8c3ace..1f9e34a16 100644 --- a/src/server/api/routers/weather.ts +++ b/src/server/api/routers/weather.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; + import { createTRPCRouter, publicProcedure } from '../trpc'; const citySchema = z.object({ diff --git a/src/server/api/trpc.ts b/src/server/api/trpc.ts index 748edda91..c0aca6f6c 100644 --- a/src/server/api/trpc.ts +++ b/src/server/api/trpc.ts @@ -6,7 +6,6 @@ * TL;DR - This is where all the tRPC server stuff is created and plugged in. The pieces you will * need to use are documented accordingly near the end. */ - import { initTRPC } from '@trpc/server'; import { type CreateNextContextOptions } from '@trpc/server/adapters/next'; import superjson from 'superjson'; diff --git a/src/tools/client/app-properties.ts b/src/tools/client/app-properties.ts index 9965fa984..9d6a1731d 100644 --- a/src/tools/client/app-properties.ts +++ b/src/tools/client/app-properties.ts @@ -6,7 +6,7 @@ export const findAppProperty = (app: ConfigAppType, key: IntegrationField) => /** Checks if the type of an integration is part of the TIntegrations array with propper typing */ export const checkIntegrationsType = < TTest extends CheckIntegrationTypeInput, - TIntegrations extends readonly IntegrationType[] + TIntegrations extends readonly IntegrationType[], >( test: TTest | undefined | null, integrations: TIntegrations @@ -21,7 +21,7 @@ type CheckIntegrationTypeInput = { type CheckIntegrationType< TInput extends CheckIntegrationTypeInput, - TIntegrations extends readonly IntegrationType[] + TIntegrations extends readonly IntegrationType[], > = TInput & { type: TIntegrations[number]; }; diff --git a/src/tools/client/math.ts b/src/tools/client/math.ts index 42f543b54..ec2db7723 100644 --- a/src/tools/client/math.ts +++ b/src/tools/client/math.ts @@ -10,9 +10,9 @@ const ranges = [ export const formatNumber = (n: number, decimalPlaces: number) => { // eslint-disable-next-line no-restricted-syntax for (const range of ranges) { - if (n < range.divider) continue; + if (n < range.divider) continue; - return (n / range.divider).toFixed(decimalPlaces) + range.suffix; + return (n / range.divider).toFixed(decimalPlaces) + range.suffix; } return n.toFixed(decimalPlaces); }; diff --git a/src/tools/color.ts b/src/tools/color.ts index 6e92bfab9..c60626e18 100644 --- a/src/tools/color.ts +++ b/src/tools/color.ts @@ -1,5 +1,5 @@ -import { createContext, useContext } from 'react'; import { MantineTheme } from '@mantine/core'; +import { createContext, useContext } from 'react'; type colorThemeContextType = { primaryColor: MantineTheme['primaryColor']; diff --git a/src/tools/config/backendMigrateConfig.ts b/src/tools/config/backendMigrateConfig.ts index f17dfd5e7..cd35cd9d6 100644 --- a/src/tools/config/backendMigrateConfig.ts +++ b/src/tools/config/backendMigrateConfig.ts @@ -1,4 +1,5 @@ import fs from 'fs'; + import { BackendConfigType } from '../../types/config'; import { Config } from '../types'; import { migrateConfig } from './migrateConfig'; diff --git a/src/tools/config/configExists.ts b/src/tools/config/configExists.ts index f6c05b523..84838a5d8 100644 --- a/src/tools/config/configExists.ts +++ b/src/tools/config/configExists.ts @@ -1,4 +1,5 @@ import fs from 'fs'; + import { generateConfigPath } from './generateConfigPath'; export const configExists = (name: string) => { diff --git a/src/tools/config/getConfig.ts b/src/tools/config/getConfig.ts index 0ab1ea62a..080f20e65 100644 --- a/src/tools/config/getConfig.ts +++ b/src/tools/config/getConfig.ts @@ -1,5 +1,6 @@ import Consola from 'consola'; import { v4 as uuidv4 } from 'uuid'; + import { BackendConfigType, ConfigType } from '../../types/config'; import { backendMigrateConfig } from './backendMigrateConfig'; import { configExists } from './configExists'; diff --git a/src/tools/config/getFrontendConfig.ts b/src/tools/config/getFrontendConfig.ts index 73b559a9f..baad9b98b 100644 --- a/src/tools/config/getFrontendConfig.ts +++ b/src/tools/config/getFrontendConfig.ts @@ -1,9 +1,10 @@ import Consola from 'consola'; import fs from 'fs'; +import { fetchCity } from '~/server/api/routers/weather'; import { IntegrationField } from '~/types/app'; + import { BackendConfigType, ConfigType } from '../../types/config'; import { getConfig } from './getConfig'; -import { fetchCity } from '~/server/api/routers/weather'; export const getFrontendConfig = async (name: string): Promise => { let config = getConfig(name); diff --git a/src/tools/config/migrateConfig.ts b/src/tools/config/migrateConfig.ts index 3411be969..12f4b3435 100644 --- a/src/tools/config/migrateConfig.ts +++ b/src/tools/config/migrateConfig.ts @@ -1,5 +1,4 @@ import Consola from 'consola'; - import { v4 as uuidv4 } from 'uuid'; import { ConfigAppIntegrationType, ConfigAppType, IntegrationType } from '../../types/app'; diff --git a/src/tools/config/readConfig.ts b/src/tools/config/readConfig.ts index c038d88b0..4fc1905d4 100644 --- a/src/tools/config/readConfig.ts +++ b/src/tools/config/readConfig.ts @@ -1,4 +1,5 @@ import fs from 'fs'; + import { generateConfigPath } from './generateConfigPath'; export function readConfig(name: string) { diff --git a/src/tools/config/writeConfig.ts b/src/tools/config/writeConfig.ts index 5d57d9d03..f5bb8ede4 100644 --- a/src/tools/config/writeConfig.ts +++ b/src/tools/config/writeConfig.ts @@ -1,4 +1,5 @@ import fs from 'fs'; + import { BackendConfigType } from '../../types/config'; import { generateConfigPath } from './generateConfigPath'; diff --git a/src/tools/getConfig.ts b/src/tools/getConfig.ts index 2c7526a7b..c594e9b01 100644 --- a/src/tools/getConfig.ts +++ b/src/tools/getConfig.ts @@ -1,7 +1,8 @@ -import path from 'path'; import fs from 'fs'; -import { getFallbackConfig } from './config/getFallbackConfig'; +import path from 'path'; + import { ConfigType } from '../types/config'; +import { getFallbackConfig } from './config/getFallbackConfig'; export function getConfig(name: string, props: any = undefined) { // Check if the config file exists diff --git a/src/tools/server/images/local-icons-repository.ts b/src/tools/server/images/local-icons-repository.ts index a19079443..3114d32e3 100644 --- a/src/tools/server/images/local-icons-repository.ts +++ b/src/tools/server/images/local-icons-repository.ts @@ -1,4 +1,5 @@ import fs from 'fs'; + import { AbstractIconRepository, NormalizedIcon, diff --git a/src/tools/server/sdk/adGuard/adGuard.schema.ts b/src/tools/server/sdk/adGuard/adGuard.schema.ts index a57b595ec..bad381659 100644 --- a/src/tools/server/sdk/adGuard/adGuard.schema.ts +++ b/src/tools/server/sdk/adGuard/adGuard.schema.ts @@ -30,12 +30,14 @@ export const adGuardApiStatusResponseSchema = z.object({ }); export const adGuardApiFilteringStatusSchema = z.object({ - filters: z.array(z.object({ - url: z.string().url(), - name: z.string(), - last_updated: z.string().optional(), - id: z.number().nonnegative(), - rules_count: z.number().nonnegative(), - enabled: z.boolean(), - })), + filters: z.array( + z.object({ + url: z.string().url(), + name: z.string(), + last_updated: z.string().optional(), + id: z.number().nonnegative(), + rules_count: z.number().nonnegative(), + enabled: z.boolean(), + }) + ), }); diff --git a/src/tools/server/sdk/pihole/piHole.spec.ts b/src/tools/server/sdk/pihole/piHole.spec.ts index 36a1f1aeb..4df9964c9 100644 --- a/src/tools/server/sdk/pihole/piHole.spec.ts +++ b/src/tools/server/sdk/pihole/piHole.spec.ts @@ -1,5 +1,6 @@ import Consola from 'consola'; -import { vi, describe, it, expect } from 'vitest'; +import { describe, expect, it, vi } from 'vitest'; + import { PiHoleClient } from './piHole'; describe('PiHole API client', () => { @@ -307,7 +308,9 @@ describe('PiHole API client', () => { const client = new PiHoleClient('http://pi.hole', 'nice'); // Act & Assert - await expect(() => client.disable()).rejects.toThrowErrorMatchingInlineSnapshot('"Status code does not indicate success: 404"'); + await expect(() => client.disable()).rejects.toThrowErrorMatchingInlineSnapshot( + '"Status code does not indicate success: 404"' + ); expect(calledCount).toBe(1); expect(errorLogSpy).not.toHaveBeenCalled(); @@ -335,7 +338,9 @@ describe('PiHole API client', () => { const client = new PiHoleClient('http://pi.hole', 'nice'); // Act & Assert - await expect(() => client.disable()).rejects.toThrowErrorMatchingInlineSnapshot('"Response does not indicate success. Authentication is most likely invalid: "'); + await expect(() => client.disable()).rejects.toThrowErrorMatchingInlineSnapshot( + '"Response does not indicate success. Authentication is most likely invalid: "' + ); expect(calledCount).toBe(1); expect(errorLogSpy).not.toHaveBeenCalled(); diff --git a/src/tools/server/sdk/pihole/piHole.ts b/src/tools/server/sdk/pihole/piHole.ts index 09d7f9df4..13ffd2b35 100644 --- a/src/tools/server/sdk/pihole/piHole.ts +++ b/src/tools/server/sdk/pihole/piHole.ts @@ -4,7 +4,10 @@ import { PiHoleApiStatusChangeResponse, PiHoleApiSummaryResponse } from './piHol export class PiHoleClient { private readonly baseHostName: string; - constructor(hostname: string, private readonly apiToken: string) { + constructor( + hostname: string, + private readonly apiToken: string + ) { this.baseHostName = trimStringEnding(hostname, ['/admin/index.php', '/admin', '/']); } diff --git a/src/tools/server/sdk/plex/plexClient.test.ts b/src/tools/server/sdk/plex/plexClient.test.ts index 9ef7feee4..77f43a556 100644 --- a/src/tools/server/sdk/plex/plexClient.test.ts +++ b/src/tools/server/sdk/plex/plexClient.test.ts @@ -1,5 +1,4 @@ import { afterEach, describe, expect, it } from 'vitest'; - import 'vitest-fetch-mock'; import { PlexClient } from './plexClient'; diff --git a/src/tools/server/sdk/plex/plexClient.ts b/src/tools/server/sdk/plex/plexClient.ts index eabf5a264..cfacd9a17 100644 --- a/src/tools/server/sdk/plex/plexClient.ts +++ b/src/tools/server/sdk/plex/plexClient.ts @@ -6,7 +6,10 @@ import { } from '../../../../types/api/media-server/session-info'; export class PlexClient { - constructor(private readonly apiAddress: string, private readonly token: string) {} + constructor( + private readonly apiAddress: string, + private readonly token: string + ) {} async getSessions(): Promise { const response = await fetch(`${this.apiAddress}/status/sessions?X-Plex-Token=${this.token}`); @@ -43,8 +46,8 @@ export class PlexClient { const transcodingElement = this.findElement('TranscodeSession', videoElement.elements); return { - id: (sessionElement?.id as string | undefined), - username: userElement?.title ?? 'Anonymous' as string, + id: sessionElement?.id as string | undefined, + username: userElement?.title ?? ('Anonymous' as string), userProfilePicture: userElement?.thumb as string | undefined, sessionName: `${playerElement.product} (${playerElement.title})`, currentlyPlaying: { diff --git a/src/types/api/downloads/queue/NormalizedDownloadQueueResponse.ts b/src/types/api/downloads/queue/NormalizedDownloadQueueResponse.ts index 476e7fe85..2e8cd657b 100644 --- a/src/types/api/downloads/queue/NormalizedDownloadQueueResponse.ts +++ b/src/types/api/downloads/queue/NormalizedDownloadQueueResponse.ts @@ -1,4 +1,5 @@ import { NormalizedTorrent } from '@ctrl/shared-torrent'; + import { UsenetQueueItem } from '../../../../widgets/useNet/types'; export type NormalizedDownloadQueueResponse = { diff --git a/src/types/app.ts b/src/types/app.ts index 7d4f481f9..ce5f6f5b8 100644 --- a/src/types/app.ts +++ b/src/types/app.ts @@ -1,4 +1,4 @@ -import { IconKey, IconPassword, IconUser, Icon } from '@tabler/icons-react'; +import { Icon, IconKey, IconPassword, IconUser } from '@tabler/icons-react'; import { TileBaseType } from './tile'; diff --git a/src/types/config.ts b/src/types/config.ts index 53a8a3f73..5392ca1e2 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -1,8 +1,8 @@ -import { CategoryType } from './category'; -import { WrapperType } from './wrapper'; -import { ConfigAppType, AppType } from './app'; -import { SettingsType } from './settings'; import { IWidget } from '../widgets/widgets'; +import { AppType, ConfigAppType } from './app'; +import { CategoryType } from './category'; +import { SettingsType } from './settings'; +import { WrapperType } from './wrapper'; export interface ConfigType { schemaVersion: number; diff --git a/src/utils/api.ts b/src/utils/api.ts index d8e2b3527..7a3d03785 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -8,7 +8,6 @@ import { createTRPCProxyClient, httpBatchLink, loggerLink } from '@trpc/client'; import { createTRPCNext } from '@trpc/next'; import { type inferRouterInputs, type inferRouterOutputs } from '@trpc/server'; import superjson from 'superjson'; - import { type RootRouter } from '~/server/api/root'; const getTrpcConfiguration = () => ({ diff --git a/src/widgets/WidgetWrapper.tsx b/src/widgets/WidgetWrapper.tsx index f0329a49f..3d3b1214c 100644 --- a/src/widgets/WidgetWrapper.tsx +++ b/src/widgets/WidgetWrapper.tsx @@ -1,4 +1,5 @@ import { ComponentType } from 'react'; + import Widgets from '.'; import { HomarrCardWrapper } from '../components/Dashboard/Tiles/HomarrCardWrapper'; import { WidgetsMenu } from '../components/Dashboard/Tiles/Widgets/WidgetsMenu'; diff --git a/src/widgets/bookmark/BookmarkWidgetTile.tsx b/src/widgets/bookmark/BookmarkWidgetTile.tsx index 224624116..1c3d8d151 100644 --- a/src/widgets/bookmark/BookmarkWidgetTile.tsx +++ b/src/widgets/bookmark/BookmarkWidgetTile.tsx @@ -8,11 +8,11 @@ import { Image, ScrollArea, Stack, + Switch, Text, TextInput, Title, createStyles, - Switch, } from '@mantine/core'; import { useForm } from '@mantine/form'; import { @@ -27,10 +27,11 @@ import { useTranslation } from 'next-i18next'; import { useEffect } from 'react'; import { v4 } from 'uuid'; import { z } from 'zod'; + +import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore'; import { IconSelector } from '../../components/IconSelector/IconSelector'; import { defineWidget } from '../helper'; import { IDraggableEditableListInputValue, IWidget } from '../widgets'; -import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore'; interface BookmarkItem { id: string; diff --git a/src/widgets/boundary.tsx b/src/widgets/boundary.tsx index fe175c50c..79dec0aa5 100644 --- a/src/widgets/boundary.tsx +++ b/src/widgets/boundary.tsx @@ -1,9 +1,10 @@ -import Consola from 'consola'; -import React, { ReactNode } from 'react'; -import { openModal } from '@mantine/modals'; -import { withTranslation } from 'next-i18next'; import { Button, Card, Center, Code, Group, ScrollArea, Stack, Text, Title } from '@mantine/core'; +import { openModal } from '@mantine/modals'; import { IconBrandGithub, IconBug, IconInfoCircle, IconRefresh } from '@tabler/icons-react'; +import Consola from 'consola'; +import { withTranslation } from 'next-i18next'; +import React, { ReactNode } from 'react'; + import { WidgetsMenu } from '../components/Dashboard/Tiles/Widgets/WidgetsMenu'; import { IWidget } from './widgets'; diff --git a/src/widgets/calendar/CalendarDay.tsx b/src/widgets/calendar/CalendarDay.tsx index bf52bda40..5ad9567eb 100644 --- a/src/widgets/calendar/CalendarDay.tsx +++ b/src/widgets/calendar/CalendarDay.tsx @@ -1,9 +1,16 @@ -import { Container, Indicator, IndicatorProps, Popover, useMantineTheme, Button } from '@mantine/core'; +import { + Button, + Container, + Indicator, + IndicatorProps, + Popover, + useMantineTheme, +} from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; + import { MediaList } from './MediaList'; import { MediasType } from './type'; - interface CalendarDayProps { date: Date; medias: MediasType; @@ -15,28 +22,28 @@ export const CalendarDay = ({ date, medias, size }: CalendarDayProps) => { const { radius, fn } = useMantineTheme(); var indicatorSize = 10; var indicatorOffset = -4; - switch(size){ - case "xs": { + switch (size) { + case 'xs': { indicatorSize += 0; indicatorOffset -= 0; break; } - case "sm": { + case 'sm': { indicatorSize += 1; indicatorOffset -= 1; break; } - case "md": { + case 'md': { indicatorSize += 2; indicatorOffset -= 1; break; } - case "lg": { + case 'lg': { indicatorSize += 3; indicatorOffset -= 2; break; } - case "xl": { + case 'xl': { indicatorSize += 4; indicatorOffset -= 3; break; @@ -62,18 +69,42 @@ export const CalendarDay = ({ date, medias, size }: CalendarDayProps) => { h="100%" w="100%" sx={{ - padding:'18% !important', - borderRadius: ['xs','sm'].includes(size) ? radius.md : radius.lg, - borderStyle: "solid", - borderWidth: "0.2rem", + padding: '18% !important', + borderRadius: ['xs', 'sm'].includes(size) ? radius.md : radius.lg, + borderStyle: 'solid', + borderWidth: '0.2rem', borderColor: opened ? fn.primaryColor() : 'transparent', }} > - - - - -
{date.getDate()}
+ + + + +
{date.getDate()}
diff --git a/src/widgets/calendar/CalendarTile.tsx b/src/widgets/calendar/CalendarTile.tsx index 67e93fada..501f5a4cd 100644 --- a/src/widgets/calendar/CalendarTile.tsx +++ b/src/widgets/calendar/CalendarTile.tsx @@ -4,6 +4,7 @@ import { IconCalendarTime } from '@tabler/icons-react'; import { i18n } from 'next-i18next'; import { useState } from 'react'; import { api } from '~/utils/api'; + import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore'; import { useConfigContext } from '../../config/provider'; import { defineWidget } from '../helper'; @@ -37,7 +38,7 @@ const definition = defineWidget({ { label: 'Digital', value: 'digitalRelease' }, ], }, - fontSize:{ + fontSize: { type: 'select', defaultValue: 'xs', data: [ @@ -46,7 +47,7 @@ const definition = defineWidget({ { label: 'Medium', value: 'md' }, { label: 'Large', value: 'lg' }, { label: 'Extra Large', value: 'xl' }, - ] + ], }, }, gridstack: { @@ -102,10 +103,10 @@ function CalendarTile({ widget }: CalendarTileProps) { marginBottom: '0.35rem !important', }, calendarHeaderLevel: { - height:"100%", + height: '100%', }, - calendarHeaderControl:{ - height:"100%", + calendarHeaderControl: { + height: '100%', }, calendar: { height: '100%', @@ -122,21 +123,25 @@ function CalendarTile({ widget }: CalendarTileProps) { flexDirection: 'column', width: '100%', }, - monthCell:{ - textAlign:'center', + monthCell: { + textAlign: 'center', }, month: { flex: 1, }, - day:{ - borderRadius: ['xs','sm'].includes(widget.properties.fontSize) ? radius.md : radius.lg, + day: { + borderRadius: ['xs', 'sm'].includes(widget.properties.fontSize) ? radius.md : radius.lg, }, }} getDayProps={(date) => ({ bg: getBgColorByDateAndTheme(colorScheme, date), })} renderDay={(date) => ( - + )} /> ); diff --git a/src/widgets/calendar/MediaList.tsx b/src/widgets/calendar/MediaList.tsx index 30be350af..89d0950cc 100644 --- a/src/widgets/calendar/MediaList.tsx +++ b/src/widgets/calendar/MediaList.tsx @@ -1,6 +1,7 @@ -import { createStyles, Divider, ScrollArea } from '@mantine/core'; +import { Divider, ScrollArea, createStyles } from '@mantine/core'; import { useViewportSize } from '@mantine/hooks'; import React from 'react'; + import { LidarrMediaDisplay, RadarrMediaDisplay, diff --git a/src/widgets/calendar/bg-calculator.ts b/src/widgets/calendar/bg-calculator.ts index 36b776a29..690780d37 100644 --- a/src/widgets/calendar/bg-calculator.ts +++ b/src/widgets/calendar/bg-calculator.ts @@ -1,4 +1,5 @@ import { ColorScheme, useMantineTheme } from '@mantine/core'; + import { isToday } from '../../tools/shared/time/date.tool'; export const getBgColorByDateAndTheme = (colorScheme: ColorScheme, date: Date) => { diff --git a/src/widgets/dashDot/DashDotCompactNetwork.tsx b/src/widgets/dashDot/DashDotCompactNetwork.tsx index a62416daf..eceda48ae 100644 --- a/src/widgets/dashDot/DashDotCompactNetwork.tsx +++ b/src/widgets/dashDot/DashDotCompactNetwork.tsx @@ -1,9 +1,10 @@ import { Group, Stack, Text } from '@mantine/core'; import { IconArrowNarrowDown, IconArrowNarrowUp } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; -import { bytes } from '../../tools/bytesHelper'; import { RouterOutputs } from '~/utils/api'; +import { bytes } from '../../tools/bytesHelper'; + interface DashDotCompactNetworkProps { info: DashDotInfo; } diff --git a/src/widgets/dashDot/DashDotCompactStorage.tsx b/src/widgets/dashDot/DashDotCompactStorage.tsx index 32cb28d00..25c8b3430 100644 --- a/src/widgets/dashDot/DashDotCompactStorage.tsx +++ b/src/widgets/dashDot/DashDotCompactStorage.tsx @@ -1,6 +1,7 @@ import { Group, Stack, Text } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { api } from '~/utils/api'; + import { bytes } from '../../tools/bytesHelper'; import { percentage } from '../../tools/shared/math/percentage.tool'; import { DashDotInfo } from './DashDotCompactNetwork'; diff --git a/src/widgets/dashDot/DashDotGraph.tsx b/src/widgets/dashDot/DashDotGraph.tsx index f86c5188c..28d7d2382 100644 --- a/src/widgets/dashDot/DashDotGraph.tsx +++ b/src/widgets/dashDot/DashDotGraph.tsx @@ -1,5 +1,6 @@ import { Title, createStyles, getStylesRef, useMantineTheme } from '@mantine/core'; import { useTranslation } from 'next-i18next'; + import { DashDotCompactNetwork, DashDotInfo } from './DashDotCompactNetwork'; import { DashDotCompactStorage } from './DashDotCompactStorage'; diff --git a/src/widgets/dashDot/DashDotTile.tsx b/src/widgets/dashDot/DashDotTile.tsx index 9d91814c5..7a1d873fb 100644 --- a/src/widgets/dashDot/DashDotTile.tsx +++ b/src/widgets/dashDot/DashDotTile.tsx @@ -1,7 +1,8 @@ -import { Center, createStyles, Grid, Stack, Text, Title } from '@mantine/core'; +import { Center, Grid, Stack, Text, Title, createStyles } from '@mantine/core'; import { IconUnlink } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { api } from '~/utils/api'; + import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; import { DashDotGraph } from './DashDotGraph'; diff --git a/src/widgets/date/DateTile.tsx b/src/widgets/date/DateTile.tsx index e776a7759..65925a980 100644 --- a/src/widgets/date/DateTile.tsx +++ b/src/widgets/date/DateTile.tsx @@ -3,6 +3,7 @@ import { useElementSize } from '@mantine/hooks'; import { IconClock } from '@tabler/icons-react'; import dayjs from 'dayjs'; import { useEffect, useRef, useState } from 'react'; + import { useSetSafeInterval } from '../../hooks/useSetSafeInterval'; import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; diff --git a/src/widgets/dnshole/DnsHoleSummary.tsx b/src/widgets/dnshole/DnsHoleSummary.tsx index ece6792cb..bcfc443e5 100644 --- a/src/widgets/dnshole/DnsHoleSummary.tsx +++ b/src/widgets/dnshole/DnsHoleSummary.tsx @@ -9,6 +9,7 @@ import { import { useTranslation } from 'next-i18next'; import { useConfigContext } from '~/config/provider'; import { api } from '~/utils/api'; + import { formatNumber } from '../../tools/client/math'; import { defineWidget } from '../helper'; import { WidgetLoading } from '../loading'; diff --git a/src/widgets/dnshole/type.ts b/src/widgets/dnshole/type.ts index 2ad87d652..d6b0c27f4 100644 --- a/src/widgets/dnshole/type.ts +++ b/src/widgets/dnshole/type.ts @@ -4,7 +4,7 @@ export type AdStatistics = { adsBlockedTodayPercentage: number; dnsQueriesToday: number; status: { - status: PiholeApiSummaryType['status'], + status: PiholeApiSummaryType['status']; appId: string; }[]; }; diff --git a/src/widgets/download-speed/Tile.tsx b/src/widgets/download-speed/Tile.tsx index 6e09a8c6a..71e9ffd02 100644 --- a/src/widgets/download-speed/Tile.tsx +++ b/src/widgets/download-speed/Tile.tsx @@ -4,17 +4,18 @@ import { Card, Group, Stack, - Title, Text, + Title, Tooltip, useMantineTheme, } from '@mantine/core'; import { useElementSize, useListState } from '@mantine/hooks'; import { linearGradientDef } from '@nivo/core'; -import { Serie, Datum, ResponsiveLine } from '@nivo/line'; +import { Datum, ResponsiveLine, Serie } from '@nivo/line'; import { IconDownload, IconUpload } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { useEffect } from 'react'; + import { AppAvatar } from '../../components/AppAvatar'; import { useConfigContext } from '../../config/provider'; import { useGetDownloadClientsQueue } from '../../hooks/widgets/download-speed/useGetNetworkSpeed'; diff --git a/src/widgets/download-speed/TorrentNetworkTrafficTile.tsx b/src/widgets/download-speed/TorrentNetworkTrafficTile.tsx index 6963df1ad..2e0eca755 100644 --- a/src/widgets/download-speed/TorrentNetworkTrafficTile.tsx +++ b/src/widgets/download-speed/TorrentNetworkTrafficTile.tsx @@ -1,6 +1,6 @@ import { IconArrowsUpDown } from '@tabler/icons-react'; - import dynamic from 'next/dynamic'; + import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; diff --git a/src/widgets/helper.ts b/src/widgets/helper.ts index 238fd88a4..fbe5690cf 100644 --- a/src/widgets/helper.ts +++ b/src/widgets/helper.ts @@ -1,5 +1,4 @@ // Method which allows to define the type verry specific and type checks all - import { IWidgetDefinition } from './widgets'; // The options of IWidgetDefinition are so heavily typed that it even used 'true' as type diff --git a/src/widgets/iframe/IFrameTile.tsx b/src/widgets/iframe/IFrameTile.tsx index e057e607f..07bb951b3 100644 --- a/src/widgets/iframe/IFrameTile.tsx +++ b/src/widgets/iframe/IFrameTile.tsx @@ -1,6 +1,7 @@ -import { Center, createStyles, Stack, Title, Text, Container } from '@mantine/core'; +import { Center, Container, Stack, Text, Title, createStyles } from '@mantine/core'; import { IconBrowser, IconUnlink } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; diff --git a/src/widgets/index.ts b/src/widgets/index.ts index 870058fed..e7be0d37a 100644 --- a/src/widgets/index.ts +++ b/src/widgets/index.ts @@ -1,19 +1,19 @@ +import bookmark from './bookmark/BookmarkWidgetTile'; import calendar from './calendar/CalendarTile'; import dashdot from './dashDot/DashDotTile'; import date from './date/DateTile'; +import dnsHoleControls from './dnshole/DnsHoleControls'; +import dnsHoleSummary from './dnshole/DnsHoleSummary'; import torrentNetworkTraffic from './download-speed/TorrentNetworkTrafficTile'; import iframe from './iframe/IFrameTile'; +import mediaRequestsList from './media-requests/MediaRequestListTile'; +import mediaRequestsStats from './media-requests/MediaRequestStatsTile'; import mediaServer from './media-server/MediaServerTile'; import rss from './rss/RssWidgetTile'; import torrent from './torrent/TorrentTile'; import usenet from './useNet/UseNetTile'; import videoStream from './video/VideoStreamTile'; import weather from './weather/WeatherTile'; -import mediaRequestsList from './media-requests/MediaRequestListTile'; -import mediaRequestsStats from './media-requests/MediaRequestStatsTile'; -import dnsHoleSummary from './dnshole/DnsHoleSummary'; -import dnsHoleControls from './dnshole/DnsHoleControls'; -import bookmark from './bookmark/BookmarkWidgetTile'; export default { calendar, diff --git a/src/widgets/loading.tsx b/src/widgets/loading.tsx index 61386165e..d85cc6e81 100644 --- a/src/widgets/loading.tsx +++ b/src/widgets/loading.tsx @@ -1,7 +1,7 @@ import { Center, Loader } from '@mantine/core'; export const WidgetLoading = () => ( -
- -
- ); +
+ +
+); diff --git a/src/widgets/media-requests/MediaRequestListTile.tsx b/src/widgets/media-requests/MediaRequestListTile.tsx index 1f4e8fc7d..38b954b34 100644 --- a/src/widgets/media-requests/MediaRequestListTile.tsx +++ b/src/widgets/media-requests/MediaRequestListTile.tsx @@ -13,13 +13,14 @@ import { import { notifications } from '@mantine/notifications'; import { IconCheck, IconGitPullRequest, IconThumbDown, IconThumbUp } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; +import { useConfigContext } from '~/config/provider'; import { api } from '~/utils/api'; + import { defineWidget } from '../helper'; import { WidgetLoading } from '../loading'; import { IWidget } from '../widgets'; import { useMediaRequestQuery } from './media-request-query'; import { MediaRequest, MediaRequestStatus } from './media-request-types'; -import { useConfigContext } from '~/config/provider'; const definition = defineWidget({ id: 'media-requests-list', diff --git a/src/widgets/media-requests/MediaRequestStatsTile.tsx b/src/widgets/media-requests/MediaRequestStatsTile.tsx index 057467192..fd81d8f0a 100644 --- a/src/widgets/media-requests/MediaRequestStatsTile.tsx +++ b/src/widgets/media-requests/MediaRequestStatsTile.tsx @@ -1,6 +1,7 @@ import { Card, Center, Flex, Stack, Text } from '@mantine/core'; import { IconChartBar } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { defineWidget } from '../helper'; import { WidgetLoading } from '../loading'; import { IWidget } from '../widgets'; diff --git a/src/widgets/media-requests/media-request-types.tsx b/src/widgets/media-requests/media-request-types.tsx index 5525d5d3b..9827dce3a 100644 --- a/src/widgets/media-requests/media-request-types.tsx +++ b/src/widgets/media-requests/media-request-types.tsx @@ -18,5 +18,5 @@ export type MediaRequest = { export enum MediaRequestStatus { PendingApproval = 1, Approved = 2, - Declined = 3 + Declined = 3, } diff --git a/src/widgets/media-server/DetailCollapseable.tsx b/src/widgets/media-server/DetailCollapseable.tsx index cef79982b..6c0cea44d 100644 --- a/src/widgets/media-server/DetailCollapseable.tsx +++ b/src/widgets/media-server/DetailCollapseable.tsx @@ -1,5 +1,6 @@ import { Card, Divider, Flex, Grid, Group, Text } from '@mantine/core'; import { IconDeviceMobile, IconId } from '@tabler/icons-react'; + import { GenericSessionInfo } from '../../types/api/media-server/session-info'; export const DetailCollapseable = ({ session }: { session: GenericSessionInfo }) => { diff --git a/src/widgets/media-server/MediaServerTile.tsx b/src/widgets/media-server/MediaServerTile.tsx index 8888ff4d4..a54518342 100644 --- a/src/widgets/media-server/MediaServerTile.tsx +++ b/src/widgets/media-server/MediaServerTile.tsx @@ -11,6 +11,7 @@ import { } from '@mantine/core'; import { IconAlertTriangle, IconMovie } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { AppAvatar } from '../../components/AppAvatar'; import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore'; import { useConfigContext } from '../../config/provider'; diff --git a/src/widgets/media-server/NowPlayingDisplay.tsx b/src/widgets/media-server/NowPlayingDisplay.tsx index b52306c47..ddab8f9d0 100644 --- a/src/widgets/media-server/NowPlayingDisplay.tsx +++ b/src/widgets/media-server/NowPlayingDisplay.tsx @@ -1,12 +1,13 @@ import { Flex, Stack, Text } from '@mantine/core'; import { + Icon, IconDeviceTv, IconHeadphones, IconQuestionMark, IconVideo, - Icon, } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { GenericSessionInfo } from '../../types/api/media-server/session-info'; export const NowPlayingDisplay = ({ session }: { session: GenericSessionInfo }) => { diff --git a/src/widgets/media-server/TableRow.tsx b/src/widgets/media-server/TableRow.tsx index deae977aa..1ee9bc304 100644 --- a/src/widgets/media-server/TableRow.tsx +++ b/src/widgets/media-server/TableRow.tsx @@ -1,5 +1,6 @@ -import { Avatar, Collapse, createStyles, Flex, Text } from '@mantine/core'; +import { Avatar, Collapse, Flex, Text, createStyles } from '@mantine/core'; import { useState } from 'react'; + import { AppAvatar } from '../../components/AppAvatar'; import { GenericSessionInfo } from '../../types/api/media-server/session-info'; import { AppType } from '../../types/app'; diff --git a/src/widgets/rss/RssWidgetTile.tsx b/src/widgets/rss/RssWidgetTile.tsx index 9512bc2ef..e9c9beec1 100644 --- a/src/widgets/rss/RssWidgetTile.tsx +++ b/src/widgets/rss/RssWidgetTile.tsx @@ -18,9 +18,9 @@ import { IconClock, IconRefresh, IconRss } from '@tabler/icons-react'; import dayjs from 'dayjs'; import { useTranslation } from 'next-i18next'; import Link from 'next/link'; - import { useConfigContext } from '~/config/provider'; import { api } from '~/utils/api'; + import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; diff --git a/src/widgets/torrent/TorrentQueueItem.tsx b/src/widgets/torrent/TorrentQueueItem.tsx index f112b0617..c1d9a7b5c 100644 --- a/src/widgets/torrent/TorrentQueueItem.tsx +++ b/src/widgets/torrent/TorrentQueueItem.tsx @@ -24,6 +24,7 @@ import { IconUpload, } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; + import { calculateETA } from '../../tools/client/calculateEta'; import { humanFileSize } from '../../tools/humanFileSize'; import { AppType } from '../../types/app'; diff --git a/src/widgets/torrent/TorrentTile.spec.ts b/src/widgets/torrent/TorrentTile.spec.ts index 98f2b8dfe..f3a4148fd 100644 --- a/src/widgets/torrent/TorrentTile.spec.ts +++ b/src/widgets/torrent/TorrentTile.spec.ts @@ -1,6 +1,5 @@ import { NormalizedTorrent, TorrentState } from '@ctrl/shared-torrent'; - -import { describe, it, expect } from 'vitest'; +import { describe, expect, it } from 'vitest'; import { ITorrent, filterTorrents } from './TorrentTile'; @@ -186,7 +185,7 @@ const constructTorrent = ( name: string, isCompleted: boolean, downloadSpeed: number, - label?: string, + label?: string ): NormalizedTorrent => ({ id, name, diff --git a/src/widgets/torrent/TorrentTile.tsx b/src/widgets/torrent/TorrentTile.tsx index a4bb4b77d..c34f6668e 100644 --- a/src/widgets/torrent/TorrentTile.tsx +++ b/src/widgets/torrent/TorrentTile.tsx @@ -1,5 +1,4 @@ import { NormalizedTorrent } from '@ctrl/shared-torrent'; - import { Badge, Center, @@ -13,22 +12,18 @@ import { Title, } from '@mantine/core'; import { useElementSize } from '@mantine/hooks'; - import { IconFileDownload, IconInfoCircle } from '@tabler/icons-react'; - import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import relativeTime from 'dayjs/plugin/relativeTime'; - import { useTranslation } from 'next-i18next'; -import { defineWidget } from '../helper'; -import { IWidget } from '../widgets'; import { MIN_WIDTH_MOBILE } from '../../constants/constants'; -import { AppIntegrationType } from '../../types/app'; import { useGetDownloadClientsQueue } from '../../hooks/widgets/download-speed/useGetNetworkSpeed'; import { NormalizedDownloadQueueResponse } from '../../types/api/downloads/queue/NormalizedDownloadQueueResponse'; - +import { AppIntegrationType } from '../../types/app'; +import { defineWidget } from '../helper'; +import { IWidget } from '../widgets'; import { BitTorrrentQueueItem } from './TorrentQueueItem'; dayjs.extend(duration); diff --git a/src/widgets/useNet/UseNetTile.tsx b/src/widgets/useNet/UseNetTile.tsx index 79aee3136..bc28de4d9 100644 --- a/src/widgets/useNet/UseNetTile.tsx +++ b/src/widgets/useNet/UseNetTile.tsx @@ -1,11 +1,11 @@ import { Badge, Button, Group, Select, Stack, Tabs, Text, Title } from '@mantine/core'; -import { IconFileDownload, IconPlayerPause, IconPlayerPlay } from '@tabler/icons-react'; -import { useEffect, useState } from 'react'; - import { useElementSize } from '@mantine/hooks'; +import { IconFileDownload, IconPlayerPause, IconPlayerPlay } from '@tabler/icons-react'; import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { useTranslation } from 'next-i18next'; +import { useEffect, useState } from 'react'; + import { useConfigContext } from '../../config/provider'; import { MIN_WIDTH_MOBILE } from '../../constants/constants'; import { diff --git a/src/widgets/useNet/UsenetHistoryList.tsx b/src/widgets/useNet/UsenetHistoryList.tsx index 1c129fb93..7123a9a8f 100644 --- a/src/widgets/useNet/UsenetHistoryList.tsx +++ b/src/widgets/useNet/UsenetHistoryList.tsx @@ -17,6 +17,7 @@ import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { useTranslation } from 'next-i18next'; import { FunctionComponent, useState } from 'react'; + import { useGetUsenetHistory } from '../../hooks/widgets/dashDot/api'; import { parseDuration } from '../../tools/client/parseDuration'; import { humanFileSize } from '../../tools/humanFileSize'; diff --git a/src/widgets/video/VideoFeed.tsx b/src/widgets/video/VideoFeed.tsx index b24936c73..6bd7ab3b2 100644 --- a/src/widgets/video/VideoFeed.tsx +++ b/src/widgets/video/VideoFeed.tsx @@ -1,4 +1,4 @@ -import { createStyles, LoadingOverlay } from '@mantine/core'; +import { LoadingOverlay, createStyles } from '@mantine/core'; import { useEffect, useRef, useState } from 'react'; import videojs from 'video.js'; import 'video.js/dist/video-js.css'; diff --git a/src/widgets/video/VideoStreamTile.tsx b/src/widgets/video/VideoStreamTile.tsx index e866314de..a3bbfc7c1 100644 --- a/src/widgets/video/VideoStreamTile.tsx +++ b/src/widgets/video/VideoStreamTile.tsx @@ -2,6 +2,7 @@ import { Center, Group, Stack, Title } from '@mantine/core'; import { IconDeviceCctv, IconHeartBroken } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import dynamic from 'next/dynamic'; + import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; diff --git a/src/widgets/weather/WeatherIcon.tsx b/src/widgets/weather/WeatherIcon.tsx index c55c8a4c9..a32d9ffef 100644 --- a/src/widgets/weather/WeatherIcon.tsx +++ b/src/widgets/weather/WeatherIcon.tsx @@ -1,5 +1,6 @@ import { Box, Tooltip } from '@mantine/core'; import { + Icon, IconCloud, IconCloudFog, IconCloudRain, @@ -8,7 +9,6 @@ import { IconQuestionMark, IconSnowflake, IconSun, - Icon, } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; diff --git a/src/widgets/weather/WeatherTile.tsx b/src/widgets/weather/WeatherTile.tsx index 5f0440284..9d257d819 100644 --- a/src/widgets/weather/WeatherTile.tsx +++ b/src/widgets/weather/WeatherTile.tsx @@ -2,6 +2,7 @@ import { Center, Group, Skeleton, Stack, Text, Title } from '@mantine/core'; import { useElementSize } from '@mantine/hooks'; import { IconArrowDownRight, IconArrowUpRight, IconCloudRain } from '@tabler/icons-react'; import { api } from '~/utils/api'; + import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; import { WeatherIcon } from './WeatherIcon'; diff --git a/src/widgets/widgets.ts b/src/widgets/widgets.ts index be5322b60..989de520c 100644 --- a/src/widgets/widgets.ts +++ b/src/widgets/widgets.ts @@ -1,4 +1,3 @@ -import React from 'react'; import { MultiSelectProps, NumberInputProps, @@ -8,6 +7,7 @@ import { TextInputProps, } from '@mantine/core'; import { Icon } from '@tabler/icons-react'; +import React from 'react'; import { AreaType } from '../types/area'; import { ShapeType } from '../types/shape'; diff --git a/tests/setupVitest.ts b/tests/setupVitest.ts index 6d1c12953..9a7941910 100644 --- a/tests/setupVitest.ts +++ b/tests/setupVitest.ts @@ -1,6 +1,6 @@ //setupVitest.js or similar file -import createFetchMock from 'vitest-fetch-mock'; import { vi } from 'vitest'; +import createFetchMock from 'vitest-fetch-mock'; const fetchMocker = createFetchMock(vi); diff --git a/vitest.config.ts b/vitest.config.ts index 566d1cfcc..86a5337de 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,6 +1,5 @@ import react from '@vitejs/plugin-react'; import tsconfigPaths from 'vite-tsconfig-paths'; - import { configDefaults, defineConfig } from 'vitest/config'; // https://vitejs.dev/config/ diff --git a/yarn.lock b/yarn.lock index 779d21148..df67a75fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1875,9 +1875,9 @@ __metadata: languageName: node linkType: hard -"@trivago/prettier-plugin-sort-imports@npm:^4.1.1": - version: 4.1.1 - resolution: "@trivago/prettier-plugin-sort-imports@npm:4.1.1" +"@trivago/prettier-plugin-sort-imports@npm:^4.2.0": + version: 4.2.0 + resolution: "@trivago/prettier-plugin-sort-imports@npm:4.2.0" dependencies: "@babel/generator": 7.17.7 "@babel/parser": ^7.20.5 @@ -1887,11 +1887,11 @@ __metadata: lodash: ^4.17.21 peerDependencies: "@vue/compiler-sfc": 3.x - prettier: 2.x + prettier: 2.x - 3.x peerDependenciesMeta: "@vue/compiler-sfc": optional: true - checksum: 09b4c3c3f4a9e7883737acf92ae7f2a59eb3f7a6f104621a883bdb2a962dcf98398891489267a6fdbba1227a3484676f8d7470e1b3bc6422b4f457382fd030ce + checksum: 2081ba9f1a2d33b9a3eeadeb3e713d404ee3d1a5cff3b20a23d94d6d915f0a8ff549616c1e77cd728f1b33733e0d7ab8e4c2512f344a612d81ece40025351160 languageName: node linkType: hard @@ -5545,7 +5545,7 @@ __metadata: "@tanstack/react-query-persist-client": ^4.28.0 "@testing-library/jest-dom": ^5.16.5 "@testing-library/react": ^14.0.0 - "@trivago/prettier-plugin-sort-imports": ^4.1.1 + "@trivago/prettier-plugin-sort-imports": ^4.2.0 "@trpc/client": ^10.29.1 "@trpc/next": ^10.29.1 "@trpc/react-query": ^10.29.1