From c6a133d4e55312de5212929585b46d4ade19dcf6 Mon Sep 17 00:00:00 2001 From: Ryan Cohen Date: Mon, 22 Aug 2022 11:02:46 +0900 Subject: [PATCH] refactor: absolute imports with path alias (#2960) [skip ci] --- .eslintrc.js | 6 +- .vscode/settings.json | 3 +- package.json | 15 +++-- server/api/animelist.ts | 2 +- server/api/github.ts | 4 +- server/api/plexapi.ts | 6 +- server/api/plextv.ts | 8 +-- server/api/rottentomatoes.ts | 2 +- server/api/servarr/base.ts | 8 +-- server/api/servarr/radarr.ts | 2 +- server/api/servarr/sonarr.ts | 2 +- server/api/tautulli.ts | 6 +- server/api/themoviedb/index.ts | 4 +- server/entity/Issue.ts | 4 +- server/entity/Media.ts | 16 ++--- server/entity/MediaRequest.ts | 33 ++++++---- server/entity/Season.ts | 2 +- server/entity/SeasonRequest.ts | 2 +- server/entity/User.ts | 20 +++--- server/entity/UserSettings.ts | 6 +- server/index.ts | 42 ++++++------ server/interfaces/api/issueInterfaces.ts | 2 +- server/interfaces/api/mediaInterfaces.ts | 4 +- server/interfaces/api/personInterfaces.ts | 2 +- server/interfaces/api/plexInterfaces.ts | 2 +- server/interfaces/api/requestInterfaces.ts | 4 +- server/interfaces/api/serviceInterfaces.ts | 4 +- server/interfaces/api/userInterfaces.ts | 6 +- .../interfaces/api/userSettingsInterfaces.ts | 2 +- server/job/schedule.ts | 16 ++--- server/lib/downloadtracker.ts | 10 +-- server/lib/email/index.ts | 4 +- server/lib/email/openpgpEncrypt.ts | 2 +- server/lib/notifications/agents/agent.ts | 12 ++-- server/lib/notifications/agents/discord.ts | 12 ++-- server/lib/notifications/agents/email.ts | 16 ++--- server/lib/notifications/agents/gotify.ts | 8 +-- server/lib/notifications/agents/lunasea.ts | 10 +-- server/lib/notifications/agents/pushbullet.ts | 14 ++-- server/lib/notifications/agents/pushover.ts | 14 ++-- server/lib/notifications/agents/slack.ts | 8 +-- server/lib/notifications/agents/telegram.ts | 14 ++-- server/lib/notifications/agents/webhook.ts | 10 +-- server/lib/notifications/agents/webpush.ts | 16 ++--- server/lib/notifications/index.ts | 6 +- server/lib/scanners/baseScanner.ts | 16 ++--- server/lib/scanners/plex/index.ts | 24 +++---- server/lib/scanners/radarr/index.ts | 15 +++-- server/lib/scanners/sonarr/index.ts | 20 +++--- server/lib/search.ts | 12 ++-- server/lib/watchlistsync.ts | 14 ++-- server/middleware/auth.ts | 11 ++-- server/models/Collection.ts | 6 +- server/models/Movie.ts | 4 +- server/models/Person.ts | 4 +- server/models/Search.ts | 6 +- server/models/Tv.ts | 4 +- server/models/common.ts | 4 +- server/routes/auth.ts | 16 ++--- server/routes/collection.ts | 8 +-- server/routes/discover.ts | 34 +++++----- server/routes/index.ts | 32 +++++----- server/routes/issue.ts | 18 +++--- server/routes/issueComment.ts | 10 +-- server/routes/media.ts | 26 ++++---- server/routes/movie.ts | 14 ++-- server/routes/person.ts | 10 +-- server/routes/request.ts | 26 ++++---- server/routes/search.ts | 12 ++-- server/routes/service.ts | 14 ++-- server/routes/settings/index.ts | 48 +++++++------- server/routes/settings/notifications.ts | 28 ++++---- server/routes/settings/radarr.ts | 8 +-- server/routes/settings/sonarr.ts | 8 +-- server/routes/tv.ts | 14 ++-- server/routes/user/index.ts | 36 +++++------ server/routes/user/usersettings.ts | 20 +++--- server/scripts/prepareTestDb.ts | 6 +- server/subscriber/IssueCommentSubscriber.ts | 18 +++--- server/subscriber/IssueSubscriber.ts | 14 ++-- server/subscriber/MediaSubscriber.ts | 20 +++--- server/tsconfig.json | 6 +- server/types/express.d.ts | 2 +- server/utils/appVersion.ts | 2 +- server/utils/restartFlag.ts | 4 +- server/utils/typeHelpers.ts | 2 +- src/components/AppDataWarning/index.tsx | 2 +- src/components/CollectionDetails/index.tsx | 28 ++++---- .../Common/ButtonWithDropdown/index.tsx | 6 +- src/components/Common/CachedImage/index.tsx | 2 +- src/components/Common/ConfirmButton/index.tsx | 4 +- src/components/Common/ImageFader/index.tsx | 2 +- src/components/Common/List/index.tsx | 2 +- src/components/Common/ListView/index.tsx | 16 ++--- src/components/Common/Modal/index.tsx | 16 ++--- src/components/Common/PageTitle/index.tsx | 2 +- src/components/Common/PlayButton/index.tsx | 2 +- src/components/Common/SettingsTabs/index.tsx | 6 +- src/components/Common/SlideOver/index.tsx | 4 +- src/components/Common/Table/index.tsx | 2 +- .../Discover/DiscoverMovieGenre/index.tsx | 14 ++-- .../Discover/DiscoverMovieLanguage/index.tsx | 14 ++-- src/components/Discover/DiscoverMovies.tsx | 12 ++-- .../Discover/DiscoverNetwork/index.tsx | 16 ++--- .../Discover/DiscoverStudio/index.tsx | 16 ++--- src/components/Discover/DiscoverTv.tsx | 12 ++-- .../Discover/DiscoverTvGenre/index.tsx | 14 ++-- .../Discover/DiscoverTvLanguage/index.tsx | 14 ++-- .../Discover/DiscoverTvUpcoming.tsx | 12 ++-- .../Discover/DiscoverWatchlist/index.tsx | 12 ++-- .../Discover/MovieGenreList/index.tsx | 14 ++-- .../Discover/MovieGenreSlider/index.tsx | 8 +-- .../Discover/NetworkSlider/index.tsx | 4 +- .../Discover/StudioSlider/index.tsx | 4 +- src/components/Discover/Trending.tsx | 14 ++-- src/components/Discover/TvGenreList/index.tsx | 14 ++-- .../Discover/TvGenreSlider/index.tsx | 8 +-- src/components/Discover/Upcoming.tsx | 12 ++-- src/components/Discover/index.tsx | 26 ++++---- src/components/DownloadBlock/index.tsx | 4 +- src/components/ExternalLinkBlock/index.tsx | 16 ++--- src/components/GenreCard/index.tsx | 4 +- src/components/IssueBlock/index.tsx | 8 +-- .../IssueDetails/IssueComment/index.tsx | 10 +-- .../IssueDetails/IssueDescription/index.tsx | 6 +- src/components/IssueDetails/index.tsx | 36 +++++------ src/components/IssueList/IssueItem/index.tsx | 22 +++---- src/components/IssueList/index.tsx | 16 ++--- .../IssueModal/CreateIssueModal/index.tsx | 20 +++--- src/components/IssueModal/constants.ts | 2 +- src/components/IssueModal/index.tsx | 4 +- src/components/LanguageSelector/index.tsx | 4 +- .../Layout/LanguagePicker/index.tsx | 10 +-- src/components/Layout/SearchInput/index.tsx | 2 +- src/components/Layout/Sidebar/index.tsx | 8 +-- src/components/Layout/UserDropdown/index.tsx | 6 +- src/components/Layout/VersionStatus/index.tsx | 2 +- src/components/Layout/index.tsx | 14 ++-- src/components/Login/LocalLogin.tsx | 6 +- src/components/Login/index.tsx | 18 +++--- src/components/ManageSlideOver/index.tsx | 31 ++++----- src/components/MediaSlider/index.tsx | 20 +++--- .../MovieDetails/MovieCast/index.tsx | 12 ++-- .../MovieDetails/MovieCrew/index.tsx | 12 ++-- .../MovieDetails/MovieRecommendations.tsx | 14 ++-- src/components/MovieDetails/MovieSimilar.tsx | 14 ++-- src/components/MovieDetails/index.tsx | 60 ++++++++--------- .../NotificationType/index.tsx | 4 +- .../NotificationTypeSelector/index.tsx | 8 +-- src/components/PermissionEdit/index.tsx | 8 +-- src/components/PermissionOption/index.tsx | 8 +-- src/components/PersonCard/index.tsx | 2 +- src/components/PersonDetails/index.tsx | 20 +++--- src/components/PlexLoginButton/index.tsx | 4 +- src/components/RegionSelector/index.tsx | 4 +- src/components/RequestBlock/index.tsx | 16 ++--- src/components/RequestButton/index.tsx | 19 +++--- src/components/RequestCard/index.tsx | 24 +++---- .../RequestList/RequestItem/index.tsx | 24 +++---- src/components/RequestList/index.tsx | 18 +++--- .../RequestModal/AdvancedRequester/index.tsx | 20 +++--- .../RequestModal/CollectionRequestModal.tsx | 31 ++++----- .../RequestModal/MovieRequestModal.tsx | 24 +++---- .../RequestModal/QuotaDisplay/index.tsx | 4 +- .../RequestModal/SearchByNameModal/index.tsx | 10 +-- .../RequestModal/TvRequestModal.tsx | 37 +++++------ src/components/RequestModal/index.tsx | 12 ++-- .../ResetPassword/RequestResetLink.tsx | 8 +-- src/components/ResetPassword/index.tsx | 10 +-- src/components/Search/index.tsx | 16 ++--- src/components/ServiceWorkerSetup/index.tsx | 4 +- .../Notifications/NotificationsDiscord.tsx | 10 +-- .../Notifications/NotificationsEmail.tsx | 10 +-- .../NotificationsGotify/index.tsx | 8 +-- .../NotificationsLunaSea/index.tsx | 8 +-- .../NotificationsPushbullet/index.tsx | 10 +-- .../NotificationsPushover/index.tsx | 8 +-- .../NotificationsSlack/index.tsx | 8 +-- .../Notifications/NotificationsTelegram.tsx | 10 +-- .../NotificationsWebPush/index.tsx | 8 +-- .../NotificationsWebhook/index.tsx | 8 +-- src/components/Settings/RadarrModal/index.tsx | 10 +-- .../Settings/SettingsAbout/Releases/index.tsx | 12 ++-- .../Settings/SettingsAbout/index.tsx | 22 +++---- .../Settings/SettingsJobsCache/index.tsx | 24 +++---- src/components/Settings/SettingsLayout.tsx | 8 +-- .../Settings/SettingsLogs/index.tsx | 28 ++++---- src/components/Settings/SettingsMain.tsx | 30 ++++----- .../Settings/SettingsNotifications.tsx | 22 +++---- src/components/Settings/SettingsPlex.tsx | 23 +++---- src/components/Settings/SettingsServices.tsx | 29 ++++----- .../Settings/SettingsUsers/index.tsx | 14 ++-- src/components/Settings/SonarrModal/index.tsx | 10 +-- src/components/Setup/LoginWithPlex.tsx | 4 +- src/components/Setup/index.tsx | 22 +++---- src/components/Slider/index.tsx | 4 +- src/components/StatusBadge/index.tsx | 12 ++-- src/components/StatusChecker/index.tsx | 12 ++-- src/components/TitleCard/ErrorCard.tsx | 4 +- src/components/TitleCard/TmdbTitleCard.tsx | 8 +-- src/components/TitleCard/index.tsx | 26 ++++---- src/components/Toast/index.tsx | 2 +- src/components/TvDetails/TvCast/index.tsx | 12 ++-- src/components/TvDetails/TvCrew/index.tsx | 12 ++-- .../TvDetails/TvRecommendations.tsx | 14 ++-- src/components/TvDetails/TvSimilar.tsx | 14 ++-- src/components/TvDetails/index.tsx | 64 +++++++++---------- src/components/UserList/BulkEditModal.tsx | 10 +-- src/components/UserList/PlexImportModal.tsx | 8 +-- src/components/UserList/index.tsx | 38 +++++------ .../UserProfile/ProfileHeader/index.tsx | 6 +- .../UserGeneralSettings/index.tsx | 30 ++++----- .../UserNotificationsDiscord.tsx | 12 ++-- .../UserNotificationsEmail.tsx | 22 +++---- .../UserNotificationsPushbullet.tsx | 14 ++-- .../UserNotificationsPushover.tsx | 14 ++-- .../UserNotificationsTelegram.tsx | 12 ++-- .../UserNotificationsWebPush.tsx | 16 ++--- .../UserNotificationSettings/index.tsx | 24 +++---- .../UserSettings/UserPasswordChange/index.tsx | 16 ++--- .../UserSettings/UserPermissions/index.tsx | 16 ++--- .../UserProfile/UserSettings/index.tsx | 24 +++---- src/components/UserProfile/index.tsx | 34 +++++----- src/context/InteractionContext.tsx | 2 +- src/context/SettingsContext.tsx | 2 +- src/context/UserContext.tsx | 4 +- src/hooks/useDiscover.ts | 2 +- src/hooks/useIsTouch.ts | 2 +- src/hooks/useLocale.ts | 4 +- src/hooks/useRequestOverride.ts | 6 +- src/hooks/useSearchInput.ts | 2 +- src/hooks/useSettings.ts | 4 +- src/hooks/useUser.ts | 8 +-- src/pages/404.tsx | 2 +- src/pages/_app.tsx | 32 +++++----- src/pages/_error.tsx | 4 +- src/pages/collection/[collectionId]/index.tsx | 4 +- .../discover/movies/genre/[genreId]/index.tsx | 2 +- src/pages/discover/movies/genres.tsx | 2 +- src/pages/discover/movies/index.tsx | 2 +- .../movies/language/[language]/index.tsx | 2 +- .../movies/studio/[studioId]/index.tsx | 2 +- src/pages/discover/movies/upcoming.tsx | 2 +- src/pages/discover/trending.tsx | 2 +- .../discover/tv/genre/[genreId]/index.tsx | 2 +- src/pages/discover/tv/genres.tsx | 2 +- src/pages/discover/tv/index.tsx | 2 +- .../discover/tv/language/[language]/index.tsx | 2 +- .../discover/tv/network/[networkId]/index.tsx | 2 +- src/pages/discover/tv/upcoming.tsx | 2 +- src/pages/discover/watchlist.tsx | 2 +- src/pages/index.tsx | 2 +- src/pages/issues/[issueId]/index.tsx | 6 +- src/pages/issues/index.tsx | 6 +- src/pages/login/index.tsx | 2 +- src/pages/login/plex/loading.tsx | 2 +- src/pages/movie/[movieId]/cast.tsx | 2 +- src/pages/movie/[movieId]/crew.tsx | 2 +- src/pages/movie/[movieId]/index.tsx | 4 +- src/pages/movie/[movieId]/recommendations.tsx | 2 +- src/pages/movie/[movieId]/similar.tsx | 2 +- src/pages/person/[personId]/index.tsx | 2 +- src/pages/profile/index.tsx | 2 +- src/pages/profile/settings/index.tsx | 4 +- src/pages/profile/settings/main.tsx | 4 +- .../settings/notifications/discord.tsx | 6 +- .../profile/settings/notifications/email.tsx | 6 +- .../settings/notifications/pushbullet.tsx | 6 +- .../settings/notifications/pushover.tsx | 6 +- .../settings/notifications/telegram.tsx | 6 +- .../settings/notifications/webpush.tsx | 6 +- src/pages/profile/settings/password.tsx | 4 +- src/pages/profile/settings/permissions.tsx | 4 +- src/pages/requests/index.tsx | 2 +- src/pages/resetpassword/[guid]/index.tsx | 2 +- src/pages/resetpassword/index.tsx | 2 +- src/pages/search.tsx | 2 +- src/pages/settings/about.tsx | 8 +-- src/pages/settings/index.tsx | 8 +-- src/pages/settings/jobs.tsx | 8 +-- src/pages/settings/logs.tsx | 8 +-- src/pages/settings/main.tsx | 8 +-- src/pages/settings/notifications/discord.tsx | 10 +-- src/pages/settings/notifications/email.tsx | 10 +-- src/pages/settings/notifications/gotify.tsx | 10 +-- src/pages/settings/notifications/lunasea.tsx | 10 +-- .../settings/notifications/pushbullet.tsx | 10 +-- src/pages/settings/notifications/pushover.tsx | 10 +-- src/pages/settings/notifications/slack.tsx | 10 +-- src/pages/settings/notifications/telegram.tsx | 10 +-- src/pages/settings/notifications/webhook.tsx | 10 +-- src/pages/settings/notifications/webpush.tsx | 10 +-- src/pages/settings/plex.tsx | 8 +-- src/pages/settings/services.tsx | 8 +-- src/pages/settings/users.tsx | 8 +-- src/pages/setup.tsx | 2 +- src/pages/tv/[tvId]/cast.tsx | 2 +- src/pages/tv/[tvId]/crew.tsx | 2 +- src/pages/tv/[tvId]/index.tsx | 4 +- src/pages/tv/[tvId]/recommendations.tsx | 2 +- src/pages/tv/[tvId]/similar.tsx | 2 +- src/pages/users/[userId]/index.tsx | 2 +- src/pages/users/[userId]/requests.tsx | 6 +- src/pages/users/[userId]/settings/index.tsx | 8 +-- src/pages/users/[userId]/settings/main.tsx | 8 +-- .../settings/notifications/discord.tsx | 10 +-- .../[userId]/settings/notifications/email.tsx | 10 +-- .../settings/notifications/pushbullet.tsx | 10 +-- .../settings/notifications/pushover.tsx | 10 +-- .../settings/notifications/telegram.tsx | 10 +-- .../settings/notifications/webpush.tsx | 10 +-- .../users/[userId]/settings/password.tsx | 8 +-- .../users/[userId]/settings/permissions.tsx | 8 +-- src/pages/users/index.tsx | 6 +- src/utils/creditHelpers.ts | 2 +- tsconfig.json | 7 +- yarn.lock | 50 ++++++++++++++- 317 files changed, 1741 insertions(+), 1665 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 733caf5b..5af484c5 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -38,6 +38,10 @@ module.exports = { prefer: 'type-imports', }, ], + 'no-relative-import-paths/no-relative-import-paths': [ + 'error', + { allowSameFolder: true }, + ], }, overrides: [ { @@ -47,7 +51,7 @@ module.exports = { }, }, ], - plugins: ['jsx-a11y', 'react-hooks', 'formatjs'], + plugins: ['jsx-a11y', 'react-hooks', 'formatjs', 'no-relative-import-paths'], settings: { react: { pragma: 'React', diff --git a/.vscode/settings.json b/.vscode/settings.json index b8cd6195..45da7ba6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,5 +15,6 @@ "database": "./config/db/db.sqlite3" } ], - "editor.formatOnSave": true + "editor.formatOnSave": true, + "typescript.preferences.importModuleSpecifier": "non-relative" } diff --git a/package.json b/package.json index 8b244b69..f40f58e5 100644 --- a/package.json +++ b/package.json @@ -3,16 +3,16 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "nodemon -e ts --watch server --watch overseerr-api.yml -e .json,.ts,.yml -x ts-node --files --project server/tsconfig.json server/index.ts", - "build:server": "tsc --project server/tsconfig.json && copyfiles -u 2 server/templates/**/*.{html,pug} dist/templates", + "dev": "nodemon -e ts --watch server --watch overseerr-api.yml -e .json,.ts,.yml -x ts-node -r tsconfig-paths/register --files --project server/tsconfig.json server/index.ts", + "build:server": "tsc --project server/tsconfig.json && copyfiles -u 2 server/templates/**/*.{html,pug} dist/templates && tsc-alias -p server/tsconfig.json", "build:next": "next build", "build": "yarn build:next && yarn build:server", "lint": "eslint \"./server/**/*.{ts,tsx}\" \"./src/**/*.{ts,tsx}\" --cache", "start": "NODE_ENV=production node dist/index.js", "i18n:extract": "extract-messages -l=en -o src/i18n/locale -d en --flat true --overwriteDefault true \"./src/**/!(*.test).{ts,tsx}\"", - "migration:generate": "ts-node --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:generate -d server/datasource.ts", - "migration:create": "ts-node --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:create -d server/datasource.ts", - "migration:run": "ts-node --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:run -d server/datasource.ts", + "migration:generate": "ts-node -r tsconfig-paths/register --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:generate -d server/datasource.ts", + "migration:create": "ts-node -r tsconfig-paths/register --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:create -d server/datasource.ts", + "migration:run": "ts-node -r tsconfig-paths/register --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:run -d server/datasource.ts", "format": "prettier --loglevel warn --write --cache .", "format:check": "prettier --check --cache .", "typecheck": "yarn typecheck:server && yarn typecheck:client", @@ -20,7 +20,7 @@ "typecheck:client": "tsc --noEmit", "prepare": "husky install", "cypress:open": "cypress open", - "cypress:prepare": "ts-node --files server/scripts/prepareTestDb.ts", + "cypress:prepare": "ts-node -r tsconfig-paths/register --files --project server/tsconfig.json server/scripts/prepareTestDb.ts", "cypress:build": "yarn build && yarn cypress:prepare" }, "repository": { @@ -139,6 +139,7 @@ "eslint-config-prettier": "8.5.0", "eslint-plugin-formatjs": "4.1.0", "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-no-relative-import-paths": "^1.4.0", "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.30.1", "eslint-plugin-react-hooks": "4.6.0", @@ -154,6 +155,8 @@ "semantic-release-docker-buildx": "1.0.1", "tailwindcss": "3.1.8", "ts-node": "10.9.1", + "tsc-alias": "^1.7.0", + "tsconfig-paths": "^4.1.0", "typescript": "4.7.4" }, "resolutions": { diff --git a/server/api/animelist.ts b/server/api/animelist.ts index ac912b01..740f6725 100644 --- a/server/api/animelist.ts +++ b/server/api/animelist.ts @@ -1,8 +1,8 @@ +import logger from '@server/logger'; import axios from 'axios'; import fs, { promises as fsp } from 'fs'; import path from 'path'; import xml2js from 'xml2js'; -import logger from '../logger'; const UPDATE_INTERVAL_MSEC = 24 * 3600 * 1000; // how often to download new mapping in milliseconds // originally at https://raw.githubusercontent.com/ScudLee/anime-lists/master/anime-list.xml diff --git a/server/api/github.ts b/server/api/github.ts index 48b8854b..b453056e 100644 --- a/server/api/github.ts +++ b/server/api/github.ts @@ -1,5 +1,5 @@ -import cacheManager from '../lib/cache'; -import logger from '../logger'; +import cacheManager from '@server/lib/cache'; +import logger from '@server/logger'; import ExternalAPI from './externalapi'; interface GitHubRelease { diff --git a/server/api/plexapi.ts b/server/api/plexapi.ts index 0fbfa809..90aae485 100644 --- a/server/api/plexapi.ts +++ b/server/api/plexapi.ts @@ -1,7 +1,7 @@ +import type { Library, PlexSettings } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import NodePlexAPI from 'plex-api'; -import type { Library, PlexSettings } from '../lib/settings'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; export interface PlexLibraryItem { ratingKey: string; diff --git a/server/api/plextv.ts b/server/api/plextv.ts index acebcf5d..76ee6618 100644 --- a/server/api/plextv.ts +++ b/server/api/plextv.ts @@ -1,8 +1,8 @@ +import type { PlexDevice } from '@server/interfaces/api/plexInterfaces'; +import cacheManager from '@server/lib/cache'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import xml2js from 'xml2js'; -import type { PlexDevice } from '../interfaces/api/plexInterfaces'; -import cacheManager from '../lib/cache'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; import ExternalAPI from './externalapi'; interface PlexAccountResponse { diff --git a/server/api/rottentomatoes.ts b/server/api/rottentomatoes.ts index b9b00e10..e190b7b9 100644 --- a/server/api/rottentomatoes.ts +++ b/server/api/rottentomatoes.ts @@ -1,4 +1,4 @@ -import cacheManager from '../lib/cache'; +import cacheManager from '@server/lib/cache'; import ExternalAPI from './externalapi'; interface RTSearchResult { diff --git a/server/api/servarr/base.ts b/server/api/servarr/base.ts index 9c8baeb5..2b8ec4cb 100644 --- a/server/api/servarr/base.ts +++ b/server/api/servarr/base.ts @@ -1,7 +1,7 @@ -import type { AvailableCacheIds } from '../../lib/cache'; -import cacheManager from '../../lib/cache'; -import type { DVRSettings } from '../../lib/settings'; -import ExternalAPI from '../externalapi'; +import ExternalAPI from '@server/api/externalapi'; +import type { AvailableCacheIds } from '@server/lib/cache'; +import cacheManager from '@server/lib/cache'; +import type { DVRSettings } from '@server/lib/settings'; export interface SystemStatus { version: string; diff --git a/server/api/servarr/radarr.ts b/server/api/servarr/radarr.ts index cd2e61b6..1637a8d8 100644 --- a/server/api/servarr/radarr.ts +++ b/server/api/servarr/radarr.ts @@ -1,4 +1,4 @@ -import logger from '../../logger'; +import logger from '@server/logger'; import ServarrBase from './base'; export interface RadarrMovieOptions { diff --git a/server/api/servarr/sonarr.ts b/server/api/servarr/sonarr.ts index 7440d278..a5b9c1e8 100644 --- a/server/api/servarr/sonarr.ts +++ b/server/api/servarr/sonarr.ts @@ -1,4 +1,4 @@ -import logger from '../../logger'; +import logger from '@server/logger'; import ServarrBase from './base'; interface SonarrSeason { diff --git a/server/api/tautulli.ts b/server/api/tautulli.ts index deac60c9..0e5e0707 100644 --- a/server/api/tautulli.ts +++ b/server/api/tautulli.ts @@ -1,9 +1,9 @@ +import type { User } from '@server/entity/User'; +import type { TautulliSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import type { AxiosInstance } from 'axios'; import axios from 'axios'; import { uniqWith } from 'lodash'; -import type { User } from '../entity/User'; -import type { TautulliSettings } from '../lib/settings'; -import logger from '../logger'; export interface TautulliHistoryRecord { date: number; diff --git a/server/api/themoviedb/index.ts b/server/api/themoviedb/index.ts index d409bb03..ea05b8ab 100644 --- a/server/api/themoviedb/index.ts +++ b/server/api/themoviedb/index.ts @@ -1,6 +1,6 @@ +import ExternalAPI from '@server/api/externalapi'; +import cacheManager from '@server/lib/cache'; import { sortBy } from 'lodash'; -import cacheManager from '../../lib/cache'; -import ExternalAPI from '../externalapi'; import type { TmdbCollection, TmdbExternalIdResponse, diff --git a/server/entity/Issue.ts b/server/entity/Issue.ts index 4d168135..fae96967 100644 --- a/server/entity/Issue.ts +++ b/server/entity/Issue.ts @@ -1,3 +1,5 @@ +import type { IssueType } from '@server/constants/issue'; +import { IssueStatus } from '@server/constants/issue'; import { Column, CreateDateColumn, @@ -7,8 +9,6 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import type { IssueType } from '../constants/issue'; -import { IssueStatus } from '../constants/issue'; import IssueComment from './IssueComment'; import Media from './Media'; import { User } from './User'; diff --git a/server/entity/Media.ts b/server/entity/Media.ts index 114253ac..6a681c47 100644 --- a/server/entity/Media.ts +++ b/server/entity/Media.ts @@ -1,3 +1,11 @@ +import RadarrAPI from '@server/api/servarr/radarr'; +import SonarrAPI from '@server/api/servarr/sonarr'; +import { MediaStatus, MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import type { DownloadingItem } from '@server/lib/downloadtracker'; +import downloadTracker from '@server/lib/downloadtracker'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import { AfterLoad, Column, @@ -9,14 +17,6 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import RadarrAPI from '../api/servarr/radarr'; -import SonarrAPI from '../api/servarr/sonarr'; -import { MediaStatus, MediaType } from '../constants/media'; -import { getRepository } from '../datasource'; -import type { DownloadingItem } from '../lib/downloadtracker'; -import downloadTracker from '../lib/downloadtracker'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; import Issue from './Issue'; import { MediaRequest } from './MediaRequest'; import Season from './Season'; diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index cf2d0333..eefbc11f 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -1,3 +1,23 @@ +import type { RadarrMovieOptions } from '@server/api/servarr/radarr'; +import RadarrAPI from '@server/api/servarr/radarr'; +import type { + AddSeriesOptions, + SonarrSeries, +} from '@server/api/servarr/sonarr'; +import SonarrAPI from '@server/api/servarr/sonarr'; +import TheMovieDb from '@server/api/themoviedb'; +import { ANIME_KEYWORD_ID } from '@server/api/themoviedb/constants'; +import { + MediaRequestStatus, + MediaStatus, + MediaType, +} from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import type { MediaRequestBody } from '@server/interfaces/api/requestInterfaces'; +import notificationManager, { Notification } from '@server/lib/notifications'; +import { Permission } from '@server/lib/permissions'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import { isEqual, truncate } from 'lodash'; import { AfterInsert, @@ -12,19 +32,6 @@ import { RelationCount, UpdateDateColumn, } from 'typeorm'; -import type { RadarrMovieOptions } from '../api/servarr/radarr'; -import RadarrAPI from '../api/servarr/radarr'; -import type { AddSeriesOptions, SonarrSeries } from '../api/servarr/sonarr'; -import SonarrAPI from '../api/servarr/sonarr'; -import TheMovieDb from '../api/themoviedb'; -import { ANIME_KEYWORD_ID } from '../api/themoviedb/constants'; -import { MediaRequestStatus, MediaStatus, MediaType } from '../constants/media'; -import { getRepository } from '../datasource'; -import type { MediaRequestBody } from '../interfaces/api/requestInterfaces'; -import notificationManager, { Notification } from '../lib/notifications'; -import { Permission } from '../lib/permissions'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; import Media from './Media'; import SeasonRequest from './SeasonRequest'; import { User } from './User'; diff --git a/server/entity/Season.ts b/server/entity/Season.ts index f56f07d5..44a83d97 100644 --- a/server/entity/Season.ts +++ b/server/entity/Season.ts @@ -1,3 +1,4 @@ +import { MediaStatus } from '@server/constants/media'; import { Column, CreateDateColumn, @@ -6,7 +7,6 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import { MediaStatus } from '../constants/media'; import Media from './Media'; @Entity() diff --git a/server/entity/SeasonRequest.ts b/server/entity/SeasonRequest.ts index 40ae04f0..f9eeef50 100644 --- a/server/entity/SeasonRequest.ts +++ b/server/entity/SeasonRequest.ts @@ -1,3 +1,4 @@ +import { MediaRequestStatus } from '@server/constants/media'; import { Column, CreateDateColumn, @@ -6,7 +7,6 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import { MediaRequestStatus } from '../constants/media'; import { MediaRequest } from './MediaRequest'; @Entity() diff --git a/server/entity/User.ts b/server/entity/User.ts index ebd01175..0c540fee 100644 --- a/server/entity/User.ts +++ b/server/entity/User.ts @@ -1,3 +1,13 @@ +import { MediaRequestStatus, MediaType } from '@server/constants/media'; +import { UserType } from '@server/constants/user'; +import { getRepository } from '@server/datasource'; +import type { QuotaResponse } from '@server/interfaces/api/userInterfaces'; +import PreparedEmail from '@server/lib/email'; +import type { PermissionCheckOptions } from '@server/lib/permissions'; +import { hasPermission, Permission } from '@server/lib/permissions'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { AfterDate } from '@server/utils/dateHelpers'; import bcrypt from 'bcrypt'; import { randomUUID } from 'crypto'; import path from 'path'; @@ -14,16 +24,6 @@ import { RelationCount, UpdateDateColumn, } from 'typeorm'; -import { MediaRequestStatus, MediaType } from '../constants/media'; -import { UserType } from '../constants/user'; -import { getRepository } from '../datasource'; -import type { QuotaResponse } from '../interfaces/api/userInterfaces'; -import PreparedEmail from '../lib/email'; -import type { PermissionCheckOptions } from '../lib/permissions'; -import { hasPermission, Permission } from '../lib/permissions'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; -import { AfterDate } from '../utils/dateHelpers'; import Issue from './Issue'; import { MediaRequest } from './MediaRequest'; import SeasonRequest from './SeasonRequest'; diff --git a/server/entity/UserSettings.ts b/server/entity/UserSettings.ts index 6def14f4..771c382d 100644 --- a/server/entity/UserSettings.ts +++ b/server/entity/UserSettings.ts @@ -1,3 +1,6 @@ +import type { NotificationAgentTypes } from '@server/interfaces/api/userSettingsInterfaces'; +import { hasNotificationType, Notification } from '@server/lib/notifications'; +import { NotificationAgentKey } from '@server/lib/settings'; import { Column, Entity, @@ -5,9 +8,6 @@ import { OneToOne, PrimaryGeneratedColumn, } from 'typeorm'; -import type { NotificationAgentTypes } from '../interfaces/api/userSettingsInterfaces'; -import { hasNotificationType, Notification } from '../lib/notifications'; -import { NotificationAgentKey } from '../lib/settings'; import { User } from './User'; export const ALL_NOTIFICATIONS = Object.values(Notification) diff --git a/server/index.ts b/server/index.ts index 1799995b..e78d5a57 100644 --- a/server/index.ts +++ b/server/index.ts @@ -1,3 +1,24 @@ +import PlexAPI from '@server/api/plexapi'; +import dataSource, { getRepository } from '@server/datasource'; +import { Session } from '@server/entity/Session'; +import { User } from '@server/entity/User'; +import { startJobs } from '@server/job/schedule'; +import notificationManager from '@server/lib/notifications'; +import DiscordAgent from '@server/lib/notifications/agents/discord'; +import EmailAgent from '@server/lib/notifications/agents/email'; +import GotifyAgent from '@server/lib/notifications/agents/gotify'; +import LunaSeaAgent from '@server/lib/notifications/agents/lunasea'; +import PushbulletAgent from '@server/lib/notifications/agents/pushbullet'; +import PushoverAgent from '@server/lib/notifications/agents/pushover'; +import SlackAgent from '@server/lib/notifications/agents/slack'; +import TelegramAgent from '@server/lib/notifications/agents/telegram'; +import WebhookAgent from '@server/lib/notifications/agents/webhook'; +import WebPushAgent from '@server/lib/notifications/agents/webpush'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import routes from '@server/routes'; +import { getAppVersion } from '@server/utils/appVersion'; +import restartFlag from '@server/utils/restartFlag'; import { getClientIp } from '@supercharge/request-ip'; import { TypeormStore } from 'connect-typeorm/out'; import cookieParser from 'cookie-parser'; @@ -11,27 +32,6 @@ import next from 'next'; import path from 'path'; import swaggerUi from 'swagger-ui-express'; import YAML from 'yamljs'; -import PlexAPI from './api/plexapi'; -import dataSource, { getRepository } from './datasource'; -import { Session } from './entity/Session'; -import { User } from './entity/User'; -import { startJobs } from './job/schedule'; -import notificationManager from './lib/notifications'; -import DiscordAgent from './lib/notifications/agents/discord'; -import EmailAgent from './lib/notifications/agents/email'; -import GotifyAgent from './lib/notifications/agents/gotify'; -import LunaSeaAgent from './lib/notifications/agents/lunasea'; -import PushbulletAgent from './lib/notifications/agents/pushbullet'; -import PushoverAgent from './lib/notifications/agents/pushover'; -import SlackAgent from './lib/notifications/agents/slack'; -import TelegramAgent from './lib/notifications/agents/telegram'; -import WebhookAgent from './lib/notifications/agents/webhook'; -import WebPushAgent from './lib/notifications/agents/webpush'; -import { getSettings } from './lib/settings'; -import logger from './logger'; -import routes from './routes'; -import { getAppVersion } from './utils/appVersion'; -import restartFlag from './utils/restartFlag'; const API_SPEC_PATH = path.join(__dirname, '../overseerr-api.yml'); diff --git a/server/interfaces/api/issueInterfaces.ts b/server/interfaces/api/issueInterfaces.ts index d86d9a4d..e5b3643c 100644 --- a/server/interfaces/api/issueInterfaces.ts +++ b/server/interfaces/api/issueInterfaces.ts @@ -1,4 +1,4 @@ -import type Issue from '../../entity/Issue'; +import type Issue from '@server/entity/Issue'; import type { PaginatedResponse } from './common'; export interface IssueResultsResponse extends PaginatedResponse { diff --git a/server/interfaces/api/mediaInterfaces.ts b/server/interfaces/api/mediaInterfaces.ts index b322fd71..263d859a 100644 --- a/server/interfaces/api/mediaInterfaces.ts +++ b/server/interfaces/api/mediaInterfaces.ts @@ -1,5 +1,5 @@ -import type Media from '../../entity/Media'; -import type { User } from '../../entity/User'; +import type Media from '@server/entity/Media'; +import type { User } from '@server/entity/User'; import type { PaginatedResponse } from './common'; export interface MediaResultsResponse extends PaginatedResponse { diff --git a/server/interfaces/api/personInterfaces.ts b/server/interfaces/api/personInterfaces.ts index 09f86ae2..c52ad0c6 100644 --- a/server/interfaces/api/personInterfaces.ts +++ b/server/interfaces/api/personInterfaces.ts @@ -1,4 +1,4 @@ -import type { PersonCreditCast, PersonCreditCrew } from '../../models/Person'; +import type { PersonCreditCast, PersonCreditCrew } from '@server/models/Person'; export interface PersonCombinedCreditsResponse { id: number; diff --git a/server/interfaces/api/plexInterfaces.ts b/server/interfaces/api/plexInterfaces.ts index 0418ad4b..32be891e 100644 --- a/server/interfaces/api/plexInterfaces.ts +++ b/server/interfaces/api/plexInterfaces.ts @@ -1,4 +1,4 @@ -import type { PlexSettings } from '../../lib/settings'; +import type { PlexSettings } from '@server/lib/settings'; export interface PlexStatus { settings: PlexSettings; diff --git a/server/interfaces/api/requestInterfaces.ts b/server/interfaces/api/requestInterfaces.ts index 22aa5c3f..89863cb0 100644 --- a/server/interfaces/api/requestInterfaces.ts +++ b/server/interfaces/api/requestInterfaces.ts @@ -1,5 +1,5 @@ -import type { MediaType } from '../../constants/media'; -import type { MediaRequest } from '../../entity/MediaRequest'; +import type { MediaType } from '@server/constants/media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; import type { PaginatedResponse } from './common'; export interface RequestResultsResponse extends PaginatedResponse { diff --git a/server/interfaces/api/serviceInterfaces.ts b/server/interfaces/api/serviceInterfaces.ts index 8ea52de9..3b430b0b 100644 --- a/server/interfaces/api/serviceInterfaces.ts +++ b/server/interfaces/api/serviceInterfaces.ts @@ -1,5 +1,5 @@ -import type { QualityProfile, RootFolder, Tag } from '../../api/servarr/base'; -import type { LanguageProfile } from '../../api/servarr/sonarr'; +import type { QualityProfile, RootFolder, Tag } from '@server/api/servarr/base'; +import type { LanguageProfile } from '@server/api/servarr/sonarr'; export interface ServiceCommonServer { id: number; diff --git a/server/interfaces/api/userInterfaces.ts b/server/interfaces/api/userInterfaces.ts index 9ab7d414..01fe1ab0 100644 --- a/server/interfaces/api/userInterfaces.ts +++ b/server/interfaces/api/userInterfaces.ts @@ -1,6 +1,6 @@ -import type Media from '../../entity/Media'; -import type { MediaRequest } from '../../entity/MediaRequest'; -import type { User } from '../../entity/User'; +import type Media from '@server/entity/Media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; +import type { User } from '@server/entity/User'; import type { PaginatedResponse } from './common'; export interface UserResultsResponse extends PaginatedResponse { diff --git a/server/interfaces/api/userSettingsInterfaces.ts b/server/interfaces/api/userSettingsInterfaces.ts index eb7fe0f9..b5b69245 100644 --- a/server/interfaces/api/userSettingsInterfaces.ts +++ b/server/interfaces/api/userSettingsInterfaces.ts @@ -1,4 +1,4 @@ -import type { NotificationAgentKey } from '../../lib/settings'; +import type { NotificationAgentKey } from '@server/lib/settings'; export interface UserSettingsGeneralResponse { username?: string; diff --git a/server/job/schedule.ts b/server/job/schedule.ts index 949913c0..07b2fa25 100644 --- a/server/job/schedule.ts +++ b/server/job/schedule.ts @@ -1,12 +1,12 @@ +import downloadTracker from '@server/lib/downloadtracker'; +import { plexFullScanner, plexRecentScanner } from '@server/lib/scanners/plex'; +import { radarrScanner } from '@server/lib/scanners/radarr'; +import { sonarrScanner } from '@server/lib/scanners/sonarr'; +import type { JobId } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import watchlistSync from '@server/lib/watchlistsync'; +import logger from '@server/logger'; import schedule from 'node-schedule'; -import downloadTracker from '../lib/downloadtracker'; -import { plexFullScanner, plexRecentScanner } from '../lib/scanners/plex'; -import { radarrScanner } from '../lib/scanners/radarr'; -import { sonarrScanner } from '../lib/scanners/sonarr'; -import type { JobId } from '../lib/settings'; -import { getSettings } from '../lib/settings'; -import watchlistSync from '../lib/watchlistsync'; -import logger from '../logger'; interface ScheduledJob { id: JobId; diff --git a/server/lib/downloadtracker.ts b/server/lib/downloadtracker.ts index c62e189d..4aef968f 100644 --- a/server/lib/downloadtracker.ts +++ b/server/lib/downloadtracker.ts @@ -1,9 +1,9 @@ +import RadarrAPI from '@server/api/servarr/radarr'; +import SonarrAPI from '@server/api/servarr/sonarr'; +import { MediaType } from '@server/constants/media'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import { uniqWith } from 'lodash'; -import RadarrAPI from '../api/servarr/radarr'; -import SonarrAPI from '../api/servarr/sonarr'; -import { MediaType } from '../constants/media'; -import logger from '../logger'; -import { getSettings } from './settings'; export interface DownloadingItem { mediaType: MediaType; diff --git a/server/lib/email/index.ts b/server/lib/email/index.ts index 0ed74b9c..c38892ae 100644 --- a/server/lib/email/index.ts +++ b/server/lib/email/index.ts @@ -1,8 +1,8 @@ +import type { NotificationAgentEmail } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; import Email from 'email-templates'; import nodemailer from 'nodemailer'; import { URL } from 'url'; -import type { NotificationAgentEmail } from '../settings'; -import { getSettings } from '../settings'; import { openpgpEncrypt } from './openpgpEncrypt'; class PreparedEmail extends Email { diff --git a/server/lib/email/openpgpEncrypt.ts b/server/lib/email/openpgpEncrypt.ts index 6ccd135e..dd320ea3 100644 --- a/server/lib/email/openpgpEncrypt.ts +++ b/server/lib/email/openpgpEncrypt.ts @@ -1,8 +1,8 @@ +import logger from '@server/logger'; import { randomBytes } from 'crypto'; import * as openpgp from 'openpgp'; import type { TransformCallback } from 'stream'; import { Transform } from 'stream'; -import logger from '../../logger'; interface EncryptorOptions { signingKey?: string; diff --git a/server/lib/notifications/agents/agent.ts b/server/lib/notifications/agents/agent.ts index 562afa70..d2b0b165 100644 --- a/server/lib/notifications/agents/agent.ts +++ b/server/lib/notifications/agents/agent.ts @@ -1,10 +1,10 @@ +import type Issue from '@server/entity/Issue'; +import type IssueComment from '@server/entity/IssueComment'; +import type Media from '@server/entity/Media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; +import type { User } from '@server/entity/User'; +import type { NotificationAgentConfig } from '@server/lib/settings'; import type { Notification } from '..'; -import type Issue from '../../../entity/Issue'; -import type IssueComment from '../../../entity/IssueComment'; -import type Media from '../../../entity/Media'; -import type { MediaRequest } from '../../../entity/MediaRequest'; -import type { User } from '../../../entity/User'; -import type { NotificationAgentConfig } from '../../settings'; export interface NotificationPayload { event?: string; diff --git a/server/lib/notifications/agents/discord.ts b/server/lib/notifications/agents/discord.ts index 16e22332..67a278bf 100644 --- a/server/lib/notifications/agents/discord.ts +++ b/server/lib/notifications/agents/discord.ts @@ -1,15 +1,15 @@ +import { IssueStatus, IssueTypeName } from '@server/constants/issue'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import type { NotificationAgentDiscord } from '@server/lib/settings'; +import { getSettings, NotificationAgentKey } from '@server/lib/settings'; +import logger from '@server/logger'; import axios from 'axios'; import { hasNotificationType, Notification, shouldSendAdminNotification, } from '..'; -import { IssueStatus, IssueTypeName } from '../../../constants/issue'; -import { getRepository } from '../../../datasource'; -import { User } from '../../../entity/User'; -import logger from '../../../logger'; -import type { NotificationAgentDiscord } from '../../settings'; -import { getSettings, NotificationAgentKey } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/email.ts b/server/lib/notifications/agents/email.ts index dc9e43b6..b668b550 100644 --- a/server/lib/notifications/agents/email.ts +++ b/server/lib/notifications/agents/email.ts @@ -1,14 +1,14 @@ +import { IssueType, IssueTypeName } from '@server/constants/issue'; +import { MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import PreparedEmail from '@server/lib/email'; +import type { NotificationAgentEmail } from '@server/lib/settings'; +import { getSettings, NotificationAgentKey } from '@server/lib/settings'; +import logger from '@server/logger'; import type { EmailOptions } from 'email-templates'; import path from 'path'; import { Notification, shouldSendAdminNotification } from '..'; -import { IssueType, IssueTypeName } from '../../../constants/issue'; -import { MediaType } from '../../../constants/media'; -import { getRepository } from '../../../datasource'; -import { User } from '../../../entity/User'; -import logger from '../../../logger'; -import PreparedEmail from '../../email'; -import type { NotificationAgentEmail } from '../../settings'; -import { getSettings, NotificationAgentKey } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/gotify.ts b/server/lib/notifications/agents/gotify.ts index 11efa501..d07caac4 100644 --- a/server/lib/notifications/agents/gotify.ts +++ b/server/lib/notifications/agents/gotify.ts @@ -1,9 +1,9 @@ +import { IssueStatus, IssueTypeName } from '@server/constants/issue'; +import type { NotificationAgentGotify } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import axios from 'axios'; import { hasNotificationType, Notification } from '..'; -import { IssueStatus, IssueTypeName } from '../../../constants/issue'; -import logger from '../../../logger'; -import type { NotificationAgentGotify } from '../../settings'; -import { getSettings } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/lunasea.ts b/server/lib/notifications/agents/lunasea.ts index 7efd5907..885b038c 100644 --- a/server/lib/notifications/agents/lunasea.ts +++ b/server/lib/notifications/agents/lunasea.ts @@ -1,10 +1,10 @@ +import { IssueStatus, IssueType } from '@server/constants/issue'; +import { MediaStatus } from '@server/constants/media'; +import type { NotificationAgentLunaSea } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import axios from 'axios'; import { hasNotificationType, Notification } from '..'; -import { IssueStatus, IssueType } from '../../../constants/issue'; -import { MediaStatus } from '../../../constants/media'; -import logger from '../../../logger'; -import type { NotificationAgentLunaSea } from '../../settings'; -import { getSettings } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/pushbullet.ts b/server/lib/notifications/agents/pushbullet.ts index 2b55aabf..eed4fda9 100644 --- a/server/lib/notifications/agents/pushbullet.ts +++ b/server/lib/notifications/agents/pushbullet.ts @@ -1,16 +1,16 @@ +import { IssueStatus, IssueTypeName } from '@server/constants/issue'; +import { MediaStatus } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import type { NotificationAgentPushbullet } from '@server/lib/settings'; +import { getSettings, NotificationAgentKey } from '@server/lib/settings'; +import logger from '@server/logger'; import axios from 'axios'; import { hasNotificationType, Notification, shouldSendAdminNotification, } from '..'; -import { IssueStatus, IssueTypeName } from '../../../constants/issue'; -import { MediaStatus } from '../../../constants/media'; -import { getRepository } from '../../../datasource'; -import { User } from '../../../entity/User'; -import logger from '../../../logger'; -import type { NotificationAgentPushbullet } from '../../settings'; -import { getSettings, NotificationAgentKey } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/pushover.ts b/server/lib/notifications/agents/pushover.ts index 93f9ee22..d8deb1bd 100644 --- a/server/lib/notifications/agents/pushover.ts +++ b/server/lib/notifications/agents/pushover.ts @@ -1,16 +1,16 @@ +import { IssueStatus, IssueTypeName } from '@server/constants/issue'; +import { MediaStatus } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import type { NotificationAgentPushover } from '@server/lib/settings'; +import { getSettings, NotificationAgentKey } from '@server/lib/settings'; +import logger from '@server/logger'; import axios from 'axios'; import { hasNotificationType, Notification, shouldSendAdminNotification, } from '..'; -import { IssueStatus, IssueTypeName } from '../../../constants/issue'; -import { MediaStatus } from '../../../constants/media'; -import { getRepository } from '../../../datasource'; -import { User } from '../../../entity/User'; -import logger from '../../../logger'; -import type { NotificationAgentPushover } from '../../settings'; -import { getSettings, NotificationAgentKey } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/slack.ts b/server/lib/notifications/agents/slack.ts index 235b0d53..9447cda3 100644 --- a/server/lib/notifications/agents/slack.ts +++ b/server/lib/notifications/agents/slack.ts @@ -1,9 +1,9 @@ +import { IssueStatus, IssueTypeName } from '@server/constants/issue'; +import type { NotificationAgentSlack } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import axios from 'axios'; import { hasNotificationType, Notification } from '..'; -import { IssueStatus, IssueTypeName } from '../../../constants/issue'; -import logger from '../../../logger'; -import type { NotificationAgentSlack } from '../../settings'; -import { getSettings } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/telegram.ts b/server/lib/notifications/agents/telegram.ts index 6f2fa709..7d706212 100644 --- a/server/lib/notifications/agents/telegram.ts +++ b/server/lib/notifications/agents/telegram.ts @@ -1,16 +1,16 @@ +import { IssueStatus, IssueTypeName } from '@server/constants/issue'; +import { MediaStatus } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import type { NotificationAgentTelegram } from '@server/lib/settings'; +import { getSettings, NotificationAgentKey } from '@server/lib/settings'; +import logger from '@server/logger'; import axios from 'axios'; import { hasNotificationType, Notification, shouldSendAdminNotification, } from '..'; -import { IssueStatus, IssueTypeName } from '../../../constants/issue'; -import { MediaStatus } from '../../../constants/media'; -import { getRepository } from '../../../datasource'; -import { User } from '../../../entity/User'; -import logger from '../../../logger'; -import type { NotificationAgentTelegram } from '../../settings'; -import { getSettings, NotificationAgentKey } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/webhook.ts b/server/lib/notifications/agents/webhook.ts index 19c8e357..461cd37f 100644 --- a/server/lib/notifications/agents/webhook.ts +++ b/server/lib/notifications/agents/webhook.ts @@ -1,11 +1,11 @@ +import { IssueStatus, IssueType } from '@server/constants/issue'; +import { MediaStatus } from '@server/constants/media'; +import type { NotificationAgentWebhook } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import axios from 'axios'; import { get } from 'lodash'; import { hasNotificationType, Notification } from '..'; -import { IssueStatus, IssueType } from '../../../constants/issue'; -import { MediaStatus } from '../../../constants/media'; -import logger from '../../../logger'; -import type { NotificationAgentWebhook } from '../../settings'; -import { getSettings } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/agents/webpush.ts b/server/lib/notifications/agents/webpush.ts index 20bb14d1..275a77e8 100644 --- a/server/lib/notifications/agents/webpush.ts +++ b/server/lib/notifications/agents/webpush.ts @@ -1,13 +1,13 @@ +import { IssueType, IssueTypeName } from '@server/constants/issue'; +import { MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import { UserPushSubscription } from '@server/entity/UserPushSubscription'; +import type { NotificationAgentConfig } from '@server/lib/settings'; +import { getSettings, NotificationAgentKey } from '@server/lib/settings'; +import logger from '@server/logger'; import webpush from 'web-push'; import { Notification, shouldSendAdminNotification } from '..'; -import { IssueType, IssueTypeName } from '../../../constants/issue'; -import { MediaType } from '../../../constants/media'; -import { getRepository } from '../../../datasource'; -import { User } from '../../../entity/User'; -import { UserPushSubscription } from '../../../entity/UserPushSubscription'; -import logger from '../../../logger'; -import type { NotificationAgentConfig } from '../../settings'; -import { getSettings, NotificationAgentKey } from '../../settings'; import type { NotificationAgent, NotificationPayload } from './agent'; import { BaseAgent } from './agent'; diff --git a/server/lib/notifications/index.ts b/server/lib/notifications/index.ts index b942e360..71aea8fe 100644 --- a/server/lib/notifications/index.ts +++ b/server/lib/notifications/index.ts @@ -1,6 +1,6 @@ -import type { User } from '../../entity/User'; -import logger from '../../logger'; -import { Permission } from '../permissions'; +import type { User } from '@server/entity/User'; +import { Permission } from '@server/lib/permissions'; +import logger from '@server/logger'; import type { NotificationAgent, NotificationPayload } from './agents/agent'; export enum Notification { diff --git a/server/lib/scanners/baseScanner.ts b/server/lib/scanners/baseScanner.ts index e9ce9e04..f0f3db7e 100644 --- a/server/lib/scanners/baseScanner.ts +++ b/server/lib/scanners/baseScanner.ts @@ -1,12 +1,12 @@ +import TheMovieDb from '@server/api/themoviedb'; +import { MediaStatus, MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; +import Season from '@server/entity/Season'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import AsyncLock from '@server/utils/asyncLock'; import { randomUUID } from 'crypto'; -import TheMovieDb from '../../api/themoviedb'; -import { MediaStatus, MediaType } from '../../constants/media'; -import { getRepository } from '../../datasource'; -import Media from '../../entity/Media'; -import Season from '../../entity/Season'; -import logger from '../../logger'; -import AsyncLock from '../../utils/asyncLock'; -import { getSettings } from '../settings'; // Default scan rates (can be overidden) const BUNDLE_SIZE = 20; diff --git a/server/lib/scanners/plex/index.ts b/server/lib/scanners/plex/index.ts index c79b5b27..73e4d9b2 100644 --- a/server/lib/scanners/plex/index.ts +++ b/server/lib/scanners/plex/index.ts @@ -1,20 +1,20 @@ -import { uniqWith } from 'lodash'; -import animeList from '../../../api/animelist'; -import type { PlexLibraryItem, PlexMetadata } from '../../../api/plexapi'; -import PlexAPI from '../../../api/plexapi'; -import type { TmdbTvDetails } from '../../../api/themoviedb/interfaces'; -import { getRepository } from '../../../datasource'; -import { User } from '../../../entity/User'; -import cacheManager from '../../cache'; -import type { Library } from '../../settings'; -import { getSettings } from '../../settings'; +import animeList from '@server/api/animelist'; +import type { PlexLibraryItem, PlexMetadata } from '@server/api/plexapi'; +import PlexAPI from '@server/api/plexapi'; +import type { TmdbTvDetails } from '@server/api/themoviedb/interfaces'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import cacheManager from '@server/lib/cache'; import type { MediaIds, ProcessableSeason, RunnableScanner, StatusBase, -} from '../baseScanner'; -import BaseScanner from '../baseScanner'; +} from '@server/lib/scanners/baseScanner'; +import BaseScanner from '@server/lib/scanners/baseScanner'; +import type { Library } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import { uniqWith } from 'lodash'; const imdbRegex = new RegExp(/imdb:\/\/(tt[0-9]+)/); const tmdbRegex = new RegExp(/tmdb:\/\/([0-9]+)/); diff --git a/server/lib/scanners/radarr/index.ts b/server/lib/scanners/radarr/index.ts index 89f937e5..bc299d7b 100644 --- a/server/lib/scanners/radarr/index.ts +++ b/server/lib/scanners/radarr/index.ts @@ -1,10 +1,13 @@ +import type { RadarrMovie } from '@server/api/servarr/radarr'; +import RadarrAPI from '@server/api/servarr/radarr'; +import type { + RunnableScanner, + StatusBase, +} from '@server/lib/scanners/baseScanner'; +import BaseScanner from '@server/lib/scanners/baseScanner'; +import type { RadarrSettings } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; import { uniqWith } from 'lodash'; -import type { RadarrMovie } from '../../../api/servarr/radarr'; -import RadarrAPI from '../../../api/servarr/radarr'; -import type { RadarrSettings } from '../../settings'; -import { getSettings } from '../../settings'; -import type { RunnableScanner, StatusBase } from '../baseScanner'; -import BaseScanner from '../baseScanner'; type SyncStatus = StatusBase & { currentServer: RadarrSettings; diff --git a/server/lib/scanners/sonarr/index.ts b/server/lib/scanners/sonarr/index.ts index 6fa5d8ae..3256c948 100644 --- a/server/lib/scanners/sonarr/index.ts +++ b/server/lib/scanners/sonarr/index.ts @@ -1,17 +1,17 @@ -import { uniqWith } from 'lodash'; -import type { SonarrSeries } from '../../../api/servarr/sonarr'; -import SonarrAPI from '../../../api/servarr/sonarr'; -import type { TmdbTvDetails } from '../../../api/themoviedb/interfaces'; -import { getRepository } from '../../../datasource'; -import Media from '../../../entity/Media'; -import type { SonarrSettings } from '../../settings'; -import { getSettings } from '../../settings'; +import type { SonarrSeries } from '@server/api/servarr/sonarr'; +import SonarrAPI from '@server/api/servarr/sonarr'; +import type { TmdbTvDetails } from '@server/api/themoviedb/interfaces'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; import type { ProcessableSeason, RunnableScanner, StatusBase, -} from '../baseScanner'; -import BaseScanner from '../baseScanner'; +} from '@server/lib/scanners/baseScanner'; +import BaseScanner from '@server/lib/scanners/baseScanner'; +import type { SonarrSettings } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import { uniqWith } from 'lodash'; type SyncStatus = StatusBase & { currentServer: SonarrSettings; diff --git a/server/lib/search.ts b/server/lib/search.ts index 7cd914ac..be9ee3ae 100644 --- a/server/lib/search.ts +++ b/server/lib/search.ts @@ -1,4 +1,4 @@ -import TheMovieDb from '../api/themoviedb'; +import TheMovieDb from '@server/api/themoviedb'; import type { TmdbMovieDetails, TmdbMovieResult, @@ -9,13 +9,17 @@ import type { TmdbSearchTvResponse, TmdbTvDetails, TmdbTvResult, -} from '../api/themoviedb/interfaces'; +} from '@server/api/themoviedb/interfaces'; import { mapMovieDetailsToResult, mapPersonDetailsToResult, mapTvDetailsToResult, -} from '../models/Search'; -import { isMovie, isMovieDetails, isTvDetails } from '../utils/typeHelpers'; +} from '@server/models/Search'; +import { + isMovie, + isMovieDetails, + isTvDetails, +} from '@server/utils/typeHelpers'; interface SearchProvider { pattern: RegExp; diff --git a/server/lib/watchlistsync.ts b/server/lib/watchlistsync.ts index 8fa4decf..46147f3f 100644 --- a/server/lib/watchlistsync.ts +++ b/server/lib/watchlistsync.ts @@ -1,16 +1,16 @@ -import PlexTvAPI from '../api/plextv'; -import { MediaStatus, MediaType } from '../constants/media'; -import { getRepository } from '../datasource'; -import Media from '../entity/Media'; +import PlexTvAPI from '@server/api/plextv'; +import { MediaStatus, MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; import { DuplicateMediaRequestError, MediaRequest, NoSeasonsAvailableError, QuotaRestrictedError, RequestPermissionError, -} from '../entity/MediaRequest'; -import { User } from '../entity/User'; -import logger from '../logger'; +} from '@server/entity/MediaRequest'; +import { User } from '@server/entity/User'; +import logger from '@server/logger'; import { Permission } from './permissions'; class WatchlistSync { diff --git a/server/middleware/auth.ts b/server/middleware/auth.ts index cec41980..326d460d 100644 --- a/server/middleware/auth.ts +++ b/server/middleware/auth.ts @@ -1,7 +1,10 @@ -import { getRepository } from '../datasource'; -import { User } from '../entity/User'; -import type { Permission, PermissionCheckOptions } from '../lib/permissions'; -import { getSettings } from '../lib/settings'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import type { + Permission, + PermissionCheckOptions, +} from '@server/lib/permissions'; +import { getSettings } from '@server/lib/settings'; export const checkUser: Middleware = async (req, _res, next) => { const settings = getSettings(); diff --git a/server/models/Collection.ts b/server/models/Collection.ts index efaf449e..20a3c715 100644 --- a/server/models/Collection.ts +++ b/server/models/Collection.ts @@ -1,7 +1,7 @@ +import type { TmdbCollection } from '@server/api/themoviedb/interfaces'; +import { MediaType } from '@server/constants/media'; +import type Media from '@server/entity/Media'; import { sortBy } from 'lodash'; -import type { TmdbCollection } from '../api/themoviedb/interfaces'; -import { MediaType } from '../constants/media'; -import type Media from '../entity/Media'; import type { MovieResult } from './Search'; import { mapMovieResult } from './Search'; diff --git a/server/models/Movie.ts b/server/models/Movie.ts index 9ae1761f..3c4686b2 100644 --- a/server/models/Movie.ts +++ b/server/models/Movie.ts @@ -2,8 +2,8 @@ import type { TmdbMovieDetails, TmdbMovieReleaseResult, TmdbProductionCompany, -} from '../api/themoviedb/interfaces'; -import type Media from '../entity/Media'; +} from '@server/api/themoviedb/interfaces'; +import type Media from '@server/entity/Media'; import type { Cast, Crew, diff --git a/server/models/Person.ts b/server/models/Person.ts index 9137b266..998585ee 100644 --- a/server/models/Person.ts +++ b/server/models/Person.ts @@ -2,8 +2,8 @@ import type { TmdbPersonCreditCast, TmdbPersonCreditCrew, TmdbPersonDetails, -} from '../api/themoviedb/interfaces'; -import type Media from '../entity/Media'; +} from '@server/api/themoviedb/interfaces'; +import type Media from '@server/entity/Media'; export interface PersonDetails { id: number; diff --git a/server/models/Search.ts b/server/models/Search.ts index caeb003c..6ab696fe 100644 --- a/server/models/Search.ts +++ b/server/models/Search.ts @@ -5,9 +5,9 @@ import type { TmdbPersonResult, TmdbTvDetails, TmdbTvResult, -} from '../api/themoviedb/interfaces'; -import { MediaType as MainMediaType } from '../constants/media'; -import type Media from '../entity/Media'; +} from '@server/api/themoviedb/interfaces'; +import { MediaType as MainMediaType } from '@server/constants/media'; +import type Media from '@server/entity/Media'; export type MediaType = 'tv' | 'movie' | 'person'; diff --git a/server/models/Tv.ts b/server/models/Tv.ts index 1159fc0b..7f809cbf 100644 --- a/server/models/Tv.ts +++ b/server/models/Tv.ts @@ -5,8 +5,8 @@ import type { TmdbTvEpisodeResult, TmdbTvRatingResult, TmdbTvSeasonResult, -} from '../api/themoviedb/interfaces'; -import type Media from '../entity/Media'; +} from '@server/api/themoviedb/interfaces'; +import type Media from '@server/entity/Media'; import type { Cast, Crew, diff --git a/server/models/common.ts b/server/models/common.ts index 9a7656fa..30b40d98 100644 --- a/server/models/common.ts +++ b/server/models/common.ts @@ -7,8 +7,8 @@ import type { TmdbVideoResult, TmdbWatchProviderDetails, TmdbWatchProviders, -} from '../api/themoviedb/interfaces'; -import type { Video } from '../models/Movie'; +} from '@server/api/themoviedb/interfaces'; +import type { Video } from '@server/models/Movie'; export interface ProductionCompany { id: number; diff --git a/server/routes/auth.ts b/server/routes/auth.ts index c5d832d5..cf4a4e86 100644 --- a/server/routes/auth.ts +++ b/server/routes/auth.ts @@ -1,12 +1,12 @@ +import PlexTvAPI from '@server/api/plextv'; +import { UserType } from '@server/constants/user'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import { Permission } from '@server/lib/permissions'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { isAuthenticated } from '@server/middleware/auth'; import { Router } from 'express'; -import PlexTvAPI from '../api/plextv'; -import { UserType } from '../constants/user'; -import { getRepository } from '../datasource'; -import { User } from '../entity/User'; -import { Permission } from '../lib/permissions'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; -import { isAuthenticated } from '../middleware/auth'; const authRoutes = Router(); diff --git a/server/routes/collection.ts b/server/routes/collection.ts index aa894873..d58b0357 100644 --- a/server/routes/collection.ts +++ b/server/routes/collection.ts @@ -1,8 +1,8 @@ +import TheMovieDb from '@server/api/themoviedb'; +import Media from '@server/entity/Media'; +import logger from '@server/logger'; +import { mapCollection } from '@server/models/Collection'; import { Router } from 'express'; -import TheMovieDb from '../api/themoviedb'; -import Media from '../entity/Media'; -import logger from '../logger'; -import { mapCollection } from '../models/Collection'; const collectionRoutes = Router(); diff --git a/server/routes/discover.ts b/server/routes/discover.ts index d12a9e97..8fb009d2 100644 --- a/server/routes/discover.ts +++ b/server/routes/discover.ts @@ -1,21 +1,25 @@ -import { Router } from 'express'; -import { sortBy } from 'lodash'; -import PlexTvAPI from '../api/plextv'; -import TheMovieDb from '../api/themoviedb'; -import { MediaType } from '../constants/media'; -import { getRepository } from '../datasource'; -import Media from '../entity/Media'; -import { User } from '../entity/User'; +import PlexTvAPI from '@server/api/plextv'; +import TheMovieDb from '@server/api/themoviedb'; +import { MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; +import { User } from '@server/entity/User'; import type { GenreSliderItem, WatchlistItem, -} from '../interfaces/api/discoverInterfaces'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; -import { mapProductionCompany } from '../models/Movie'; -import { mapMovieResult, mapPersonResult, mapTvResult } from '../models/Search'; -import { mapNetwork } from '../models/Tv'; -import { isMovie, isPerson } from '../utils/typeHelpers'; +} from '@server/interfaces/api/discoverInterfaces'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { mapProductionCompany } from '@server/models/Movie'; +import { + mapMovieResult, + mapPersonResult, + mapTvResult, +} from '@server/models/Search'; +import { mapNetwork } from '@server/models/Tv'; +import { isMovie, isPerson } from '@server/utils/typeHelpers'; +import { Router } from 'express'; +import { sortBy } from 'lodash'; export const createTmdbWithRegionLanguage = (user?: User): TheMovieDb => { const settings = getSettings(); diff --git a/server/routes/index.ts b/server/routes/index.ts index 9c0c2f49..9561e171 100644 --- a/server/routes/index.ts +++ b/server/routes/index.ts @@ -1,21 +1,22 @@ -import { Router } from 'express'; -import GithubAPI from '../api/github'; -import TheMovieDb from '../api/themoviedb'; +import GithubAPI from '@server/api/github'; +import TheMovieDb from '@server/api/themoviedb'; import type { TmdbMovieResult, TmdbTvResult, -} from '../api/themoviedb/interfaces'; -import type { StatusResponse } from '../interfaces/api/settingsInterfaces'; -import { Permission } from '../lib/permissions'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; -import { checkUser, isAuthenticated } from '../middleware/auth'; -import { mapProductionCompany } from '../models/Movie'; -import { mapNetwork } from '../models/Tv'; -import { appDataPath, appDataStatus } from '../utils/appDataVolume'; -import { getAppVersion, getCommitTag } from '../utils/appVersion'; -import restartFlag from '../utils/restartFlag'; -import { isPerson } from '../utils/typeHelpers'; +} from '@server/api/themoviedb/interfaces'; +import type { StatusResponse } from '@server/interfaces/api/settingsInterfaces'; +import { Permission } from '@server/lib/permissions'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { checkUser, isAuthenticated } from '@server/middleware/auth'; +import { mapProductionCompany } from '@server/models/Movie'; +import { mapNetwork } from '@server/models/Tv'; +import settingsRoutes from '@server/routes/settings'; +import { appDataPath, appDataStatus } from '@server/utils/appDataVolume'; +import { getAppVersion, getCommitTag } from '@server/utils/appVersion'; +import restartFlag from '@server/utils/restartFlag'; +import { isPerson } from '@server/utils/typeHelpers'; +import { Router } from 'express'; import authRoutes from './auth'; import collectionRoutes from './collection'; import discoverRoutes, { createTmdbWithRegionLanguage } from './discover'; @@ -27,7 +28,6 @@ import personRoutes from './person'; import requestRoutes from './request'; import searchRoutes from './search'; import serviceRoutes from './service'; -import settingsRoutes from './settings'; import tvRoutes from './tv'; import user from './user'; diff --git a/server/routes/issue.ts b/server/routes/issue.ts index 4ea393ab..6349bb74 100644 --- a/server/routes/issue.ts +++ b/server/routes/issue.ts @@ -1,13 +1,13 @@ +import { IssueStatus, IssueType } from '@server/constants/issue'; +import { getRepository } from '@server/datasource'; +import Issue from '@server/entity/Issue'; +import IssueComment from '@server/entity/IssueComment'; +import Media from '@server/entity/Media'; +import type { IssueResultsResponse } from '@server/interfaces/api/issueInterfaces'; +import { Permission } from '@server/lib/permissions'; +import logger from '@server/logger'; +import { isAuthenticated } from '@server/middleware/auth'; import { Router } from 'express'; -import { IssueStatus, IssueType } from '../constants/issue'; -import { getRepository } from '../datasource'; -import Issue from '../entity/Issue'; -import IssueComment from '../entity/IssueComment'; -import Media from '../entity/Media'; -import type { IssueResultsResponse } from '../interfaces/api/issueInterfaces'; -import { Permission } from '../lib/permissions'; -import logger from '../logger'; -import { isAuthenticated } from '../middleware/auth'; const issueRoutes = Router(); diff --git a/server/routes/issueComment.ts b/server/routes/issueComment.ts index d4560d9d..85e41aaa 100644 --- a/server/routes/issueComment.ts +++ b/server/routes/issueComment.ts @@ -1,9 +1,9 @@ +import { getRepository } from '@server/datasource'; +import IssueComment from '@server/entity/IssueComment'; +import { Permission } from '@server/lib/permissions'; +import logger from '@server/logger'; +import { isAuthenticated } from '@server/middleware/auth'; import { Router } from 'express'; -import { getRepository } from '../datasource'; -import IssueComment from '../entity/IssueComment'; -import { Permission } from '../lib/permissions'; -import logger from '../logger'; -import { isAuthenticated } from '../middleware/auth'; const issueCommentRoutes = Router(); diff --git a/server/routes/media.ts b/server/routes/media.ts index b0c41677..8f93116c 100644 --- a/server/routes/media.ts +++ b/server/routes/media.ts @@ -1,19 +1,19 @@ -import { Router } from 'express'; -import type { FindOneOptions } from 'typeorm'; -import { In } from 'typeorm'; -import TautulliAPI from '../api/tautulli'; -import { MediaStatus, MediaType } from '../constants/media'; -import { getRepository } from '../datasource'; -import Media from '../entity/Media'; -import { User } from '../entity/User'; +import TautulliAPI from '@server/api/tautulli'; +import { MediaStatus, MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; +import { User } from '@server/entity/User'; import type { MediaResultsResponse, MediaWatchDataResponse, -} from '../interfaces/api/mediaInterfaces'; -import { Permission } from '../lib/permissions'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; -import { isAuthenticated } from '../middleware/auth'; +} from '@server/interfaces/api/mediaInterfaces'; +import { Permission } from '@server/lib/permissions'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { isAuthenticated } from '@server/middleware/auth'; +import { Router } from 'express'; +import type { FindOneOptions } from 'typeorm'; +import { In } from 'typeorm'; const mediaRoutes = Router(); diff --git a/server/routes/movie.ts b/server/routes/movie.ts index 98474c78..f11cead8 100644 --- a/server/routes/movie.ts +++ b/server/routes/movie.ts @@ -1,11 +1,11 @@ +import RottenTomatoes from '@server/api/rottentomatoes'; +import TheMovieDb from '@server/api/themoviedb'; +import { MediaType } from '@server/constants/media'; +import Media from '@server/entity/Media'; +import logger from '@server/logger'; +import { mapMovieDetails } from '@server/models/Movie'; +import { mapMovieResult } from '@server/models/Search'; import { Router } from 'express'; -import RottenTomatoes from '../api/rottentomatoes'; -import TheMovieDb from '../api/themoviedb'; -import { MediaType } from '../constants/media'; -import Media from '../entity/Media'; -import logger from '../logger'; -import { mapMovieDetails } from '../models/Movie'; -import { mapMovieResult } from '../models/Search'; const movieRoutes = Router(); diff --git a/server/routes/person.ts b/server/routes/person.ts index 5093ae46..7f5d6223 100644 --- a/server/routes/person.ts +++ b/server/routes/person.ts @@ -1,12 +1,12 @@ -import { Router } from 'express'; -import TheMovieDb from '../api/themoviedb'; -import Media from '../entity/Media'; -import logger from '../logger'; +import TheMovieDb from '@server/api/themoviedb'; +import Media from '@server/entity/Media'; +import logger from '@server/logger'; import { mapCastCredits, mapCrewCredits, mapPersonDetails, -} from '../models/Person'; +} from '@server/models/Person'; +import { Router } from 'express'; const personRoutes = Router(); diff --git a/server/routes/request.ts b/server/routes/request.ts index 71657cdb..9c9d96a8 100644 --- a/server/routes/request.ts +++ b/server/routes/request.ts @@ -1,23 +1,27 @@ -import { Router } from 'express'; -import { MediaRequestStatus, MediaStatus, MediaType } from '../constants/media'; -import { getRepository } from '../datasource'; -import Media from '../entity/Media'; +import { + MediaRequestStatus, + MediaStatus, + MediaType, +} from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; import { DuplicateMediaRequestError, MediaRequest, NoSeasonsAvailableError, QuotaRestrictedError, RequestPermissionError, -} from '../entity/MediaRequest'; -import SeasonRequest from '../entity/SeasonRequest'; -import { User } from '../entity/User'; +} from '@server/entity/MediaRequest'; +import SeasonRequest from '@server/entity/SeasonRequest'; +import { User } from '@server/entity/User'; import type { MediaRequestBody, RequestResultsResponse, -} from '../interfaces/api/requestInterfaces'; -import { Permission } from '../lib/permissions'; -import logger from '../logger'; -import { isAuthenticated } from '../middleware/auth'; +} from '@server/interfaces/api/requestInterfaces'; +import { Permission } from '@server/lib/permissions'; +import logger from '@server/logger'; +import { isAuthenticated } from '@server/middleware/auth'; +import { Router } from 'express'; const requestRoutes = Router(); diff --git a/server/routes/search.ts b/server/routes/search.ts index 2e997432..1152bce3 100644 --- a/server/routes/search.ts +++ b/server/routes/search.ts @@ -1,10 +1,10 @@ +import TheMovieDb from '@server/api/themoviedb'; +import type { TmdbSearchMultiResponse } from '@server/api/themoviedb/interfaces'; +import Media from '@server/entity/Media'; +import { findSearchProvider } from '@server/lib/search'; +import logger from '@server/logger'; +import { mapSearchResults } from '@server/models/Search'; import { Router } from 'express'; -import TheMovieDb from '../api/themoviedb'; -import type { TmdbSearchMultiResponse } from '../api/themoviedb/interfaces'; -import Media from '../entity/Media'; -import { findSearchProvider } from '../lib/search'; -import logger from '../logger'; -import { mapSearchResults } from '../models/Search'; const searchRoutes = Router(); diff --git a/server/routes/service.ts b/server/routes/service.ts index a0c375f0..b77d58c9 100644 --- a/server/routes/service.ts +++ b/server/routes/service.ts @@ -1,13 +1,13 @@ -import { Router } from 'express'; -import RadarrAPI from '../api/servarr/radarr'; -import SonarrAPI from '../api/servarr/sonarr'; -import TheMovieDb from '../api/themoviedb'; +import RadarrAPI from '@server/api/servarr/radarr'; +import SonarrAPI from '@server/api/servarr/sonarr'; +import TheMovieDb from '@server/api/themoviedb'; import type { ServiceCommonServer, ServiceCommonServerWithDetails, -} from '../interfaces/api/serviceInterfaces'; -import { getSettings } from '../lib/settings'; -import logger from '../logger'; +} from '@server/interfaces/api/serviceInterfaces'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { Router } from 'express'; const serviceRoutes = Router(); diff --git a/server/routes/settings/index.ts b/server/routes/settings/index.ts index 18d8e444..40514775 100644 --- a/server/routes/settings/index.ts +++ b/server/routes/settings/index.ts @@ -1,3 +1,27 @@ +import PlexAPI from '@server/api/plexapi'; +import PlexTvAPI from '@server/api/plextv'; +import TautulliAPI from '@server/api/tautulli'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; +import { MediaRequest } from '@server/entity/MediaRequest'; +import { User } from '@server/entity/User'; +import type { PlexConnection } from '@server/interfaces/api/plexInterfaces'; +import type { + LogMessage, + LogsResultsResponse, + SettingsAboutResponse, +} from '@server/interfaces/api/settingsInterfaces'; +import { scheduledJobs } from '@server/job/schedule'; +import type { AvailableCacheIds } from '@server/lib/cache'; +import cacheManager from '@server/lib/cache'; +import { Permission } from '@server/lib/permissions'; +import { plexFullScanner } from '@server/lib/scanners/plex'; +import type { MainSettings } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { isAuthenticated } from '@server/middleware/auth'; +import { appDataPath } from '@server/utils/appDataVolume'; +import { getAppVersion } from '@server/utils/appVersion'; import { Router } from 'express'; import rateLimit from 'express-rate-limit'; import fs from 'fs'; @@ -6,30 +30,6 @@ import { rescheduleJob } from 'node-schedule'; import path from 'path'; import semver from 'semver'; import { URL } from 'url'; -import PlexAPI from '../../api/plexapi'; -import PlexTvAPI from '../../api/plextv'; -import TautulliAPI from '../../api/tautulli'; -import { getRepository } from '../../datasource'; -import Media from '../../entity/Media'; -import { MediaRequest } from '../../entity/MediaRequest'; -import { User } from '../../entity/User'; -import type { PlexConnection } from '../../interfaces/api/plexInterfaces'; -import type { - LogMessage, - LogsResultsResponse, - SettingsAboutResponse, -} from '../../interfaces/api/settingsInterfaces'; -import { scheduledJobs } from '../../job/schedule'; -import type { AvailableCacheIds } from '../../lib/cache'; -import cacheManager from '../../lib/cache'; -import { Permission } from '../../lib/permissions'; -import { plexFullScanner } from '../../lib/scanners/plex'; -import type { MainSettings } from '../../lib/settings'; -import { getSettings } from '../../lib/settings'; -import logger from '../../logger'; -import { isAuthenticated } from '../../middleware/auth'; -import { appDataPath } from '../../utils/appDataVolume'; -import { getAppVersion } from '../../utils/appVersion'; import notificationRoutes from './notifications'; import radarrRoutes from './radarr'; import sonarrRoutes from './sonarr'; diff --git a/server/routes/settings/notifications.ts b/server/routes/settings/notifications.ts index c4350195..5a38555c 100644 --- a/server/routes/settings/notifications.ts +++ b/server/routes/settings/notifications.ts @@ -1,18 +1,18 @@ +import type { User } from '@server/entity/User'; +import { Notification } from '@server/lib/notifications'; +import type { NotificationAgent } from '@server/lib/notifications/agents/agent'; +import DiscordAgent from '@server/lib/notifications/agents/discord'; +import EmailAgent from '@server/lib/notifications/agents/email'; +import GotifyAgent from '@server/lib/notifications/agents/gotify'; +import LunaSeaAgent from '@server/lib/notifications/agents/lunasea'; +import PushbulletAgent from '@server/lib/notifications/agents/pushbullet'; +import PushoverAgent from '@server/lib/notifications/agents/pushover'; +import SlackAgent from '@server/lib/notifications/agents/slack'; +import TelegramAgent from '@server/lib/notifications/agents/telegram'; +import WebhookAgent from '@server/lib/notifications/agents/webhook'; +import WebPushAgent from '@server/lib/notifications/agents/webpush'; +import { getSettings } from '@server/lib/settings'; import { Router } from 'express'; -import type { User } from '../../entity/User'; -import { Notification } from '../../lib/notifications'; -import type { NotificationAgent } from '../../lib/notifications/agents/agent'; -import DiscordAgent from '../../lib/notifications/agents/discord'; -import EmailAgent from '../../lib/notifications/agents/email'; -import GotifyAgent from '../../lib/notifications/agents/gotify'; -import LunaSeaAgent from '../../lib/notifications/agents/lunasea'; -import PushbulletAgent from '../../lib/notifications/agents/pushbullet'; -import PushoverAgent from '../../lib/notifications/agents/pushover'; -import SlackAgent from '../../lib/notifications/agents/slack'; -import TelegramAgent from '../../lib/notifications/agents/telegram'; -import WebhookAgent from '../../lib/notifications/agents/webhook'; -import WebPushAgent from '../../lib/notifications/agents/webpush'; -import { getSettings } from '../../lib/settings'; const notificationRoutes = Router(); diff --git a/server/routes/settings/radarr.ts b/server/routes/settings/radarr.ts index 12e5d348..c2b0a6f5 100644 --- a/server/routes/settings/radarr.ts +++ b/server/routes/settings/radarr.ts @@ -1,8 +1,8 @@ +import RadarrAPI from '@server/api/servarr/radarr'; +import type { RadarrSettings } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import { Router } from 'express'; -import RadarrAPI from '../../api/servarr/radarr'; -import type { RadarrSettings } from '../../lib/settings'; -import { getSettings } from '../../lib/settings'; -import logger from '../../logger'; const radarrRoutes = Router(); diff --git a/server/routes/settings/sonarr.ts b/server/routes/settings/sonarr.ts index 06656614..358d0700 100644 --- a/server/routes/settings/sonarr.ts +++ b/server/routes/settings/sonarr.ts @@ -1,8 +1,8 @@ +import SonarrAPI from '@server/api/servarr/sonarr'; +import type { SonarrSettings } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; import { Router } from 'express'; -import SonarrAPI from '../../api/servarr/sonarr'; -import type { SonarrSettings } from '../../lib/settings'; -import { getSettings } from '../../lib/settings'; -import logger from '../../logger'; const sonarrRoutes = Router(); diff --git a/server/routes/tv.ts b/server/routes/tv.ts index 201e7afe..d45e4062 100644 --- a/server/routes/tv.ts +++ b/server/routes/tv.ts @@ -1,11 +1,11 @@ +import RottenTomatoes from '@server/api/rottentomatoes'; +import TheMovieDb from '@server/api/themoviedb'; +import { MediaType } from '@server/constants/media'; +import Media from '@server/entity/Media'; +import logger from '@server/logger'; +import { mapTvResult } from '@server/models/Search'; +import { mapSeasonWithEpisodes, mapTvDetails } from '@server/models/Tv'; import { Router } from 'express'; -import RottenTomatoes from '../api/rottentomatoes'; -import TheMovieDb from '../api/themoviedb'; -import { MediaType } from '../constants/media'; -import Media from '../entity/Media'; -import logger from '../logger'; -import { mapTvResult } from '../models/Search'; -import { mapSeasonWithEpisodes, mapTvDetails } from '../models/Tv'; const tvRoutes = Router(); diff --git a/server/routes/user/index.ts b/server/routes/user/index.ts index 9e288d97..98974f3d 100644 --- a/server/routes/user/index.ts +++ b/server/routes/user/index.ts @@ -1,26 +1,26 @@ -import { Router } from 'express'; -import gravatarUrl from 'gravatar-url'; -import { findIndex, sortBy } from 'lodash'; -import { In } from 'typeorm'; -import PlexTvAPI from '../../api/plextv'; -import TautulliAPI from '../../api/tautulli'; -import { MediaType } from '../../constants/media'; -import { UserType } from '../../constants/user'; -import { getRepository } from '../../datasource'; -import Media from '../../entity/Media'; -import { MediaRequest } from '../../entity/MediaRequest'; -import { User } from '../../entity/User'; -import { UserPushSubscription } from '../../entity/UserPushSubscription'; +import PlexTvAPI from '@server/api/plextv'; +import TautulliAPI from '@server/api/tautulli'; +import { MediaType } from '@server/constants/media'; +import { UserType } from '@server/constants/user'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; +import { MediaRequest } from '@server/entity/MediaRequest'; +import { User } from '@server/entity/User'; +import { UserPushSubscription } from '@server/entity/UserPushSubscription'; import type { QuotaResponse, UserRequestsResponse, UserResultsResponse, UserWatchDataResponse, -} from '../../interfaces/api/userInterfaces'; -import { hasPermission, Permission } from '../../lib/permissions'; -import { getSettings } from '../../lib/settings'; -import logger from '../../logger'; -import { isAuthenticated } from '../../middleware/auth'; +} from '@server/interfaces/api/userInterfaces'; +import { hasPermission, Permission } from '@server/lib/permissions'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { isAuthenticated } from '@server/middleware/auth'; +import { Router } from 'express'; +import gravatarUrl from 'gravatar-url'; +import { findIndex, sortBy } from 'lodash'; +import { In } from 'typeorm'; import userSettingsRoutes from './usersettings'; const router = Router(); diff --git a/server/routes/user/usersettings.ts b/server/routes/user/usersettings.ts index 8b80175d..875309f3 100644 --- a/server/routes/user/usersettings.ts +++ b/server/routes/user/usersettings.ts @@ -1,16 +1,16 @@ -import { Router } from 'express'; -import { canMakePermissionsChange } from '.'; -import { getRepository } from '../../datasource'; -import { User } from '../../entity/User'; -import { UserSettings } from '../../entity/UserSettings'; +import { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; +import { UserSettings } from '@server/entity/UserSettings'; import type { UserSettingsGeneralResponse, UserSettingsNotificationsResponse, -} from '../../interfaces/api/userSettingsInterfaces'; -import { Permission } from '../../lib/permissions'; -import { getSettings } from '../../lib/settings'; -import logger from '../../logger'; -import { isAuthenticated } from '../../middleware/auth'; +} from '@server/interfaces/api/userSettingsInterfaces'; +import { Permission } from '@server/lib/permissions'; +import { getSettings } from '@server/lib/settings'; +import logger from '@server/logger'; +import { isAuthenticated } from '@server/middleware/auth'; +import { Router } from 'express'; +import { canMakePermissionsChange } from '.'; const isOwnProfileOrAdmin = (): Middleware => { const authMiddleware: Middleware = (req, res, next) => { diff --git a/server/scripts/prepareTestDb.ts b/server/scripts/prepareTestDb.ts index ef77e942..46e16b3b 100644 --- a/server/scripts/prepareTestDb.ts +++ b/server/scripts/prepareTestDb.ts @@ -1,8 +1,8 @@ +import { UserType } from '@server/constants/user'; +import dataSource, { getRepository } from '@server/datasource'; +import { User } from '@server/entity/User'; import { copyFileSync } from 'fs'; import path from 'path'; -import { UserType } from '../constants/user'; -import dataSource, { getRepository } from '../datasource'; -import { User } from '../entity/User'; const prepareDb = async () => { // Copy over test settings.json diff --git a/server/subscriber/IssueCommentSubscriber.ts b/server/subscriber/IssueCommentSubscriber.ts index 8f9a451c..cb95ba00 100644 --- a/server/subscriber/IssueCommentSubscriber.ts +++ b/server/subscriber/IssueCommentSubscriber.ts @@ -1,15 +1,15 @@ +import TheMovieDb from '@server/api/themoviedb'; +import { IssueType, IssueTypeName } from '@server/constants/issue'; +import { MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import IssueComment from '@server/entity/IssueComment'; +import Media from '@server/entity/Media'; +import notificationManager, { Notification } from '@server/lib/notifications'; +import { Permission } from '@server/lib/permissions'; +import logger from '@server/logger'; import { sortBy } from 'lodash'; import type { EntitySubscriberInterface, InsertEvent } from 'typeorm'; import { EventSubscriber } from 'typeorm'; -import TheMovieDb from '../api/themoviedb'; -import { IssueType, IssueTypeName } from '../constants/issue'; -import { MediaType } from '../constants/media'; -import { getRepository } from '../datasource'; -import IssueComment from '../entity/IssueComment'; -import Media from '../entity/Media'; -import notificationManager, { Notification } from '../lib/notifications'; -import { Permission } from '../lib/permissions'; -import logger from '../logger'; @EventSubscriber() export class IssueCommentSubscriber diff --git a/server/subscriber/IssueSubscriber.ts b/server/subscriber/IssueSubscriber.ts index f6fe2a29..eb402041 100644 --- a/server/subscriber/IssueSubscriber.ts +++ b/server/subscriber/IssueSubscriber.ts @@ -1,3 +1,10 @@ +import TheMovieDb from '@server/api/themoviedb'; +import { IssueStatus, IssueType, IssueTypeName } from '@server/constants/issue'; +import { MediaType } from '@server/constants/media'; +import Issue from '@server/entity/Issue'; +import notificationManager, { Notification } from '@server/lib/notifications'; +import { Permission } from '@server/lib/permissions'; +import logger from '@server/logger'; import { sortBy } from 'lodash'; import type { EntitySubscriberInterface, @@ -5,13 +12,6 @@ import type { UpdateEvent, } from 'typeorm'; import { EventSubscriber } from 'typeorm'; -import TheMovieDb from '../api/themoviedb'; -import { IssueStatus, IssueType, IssueTypeName } from '../constants/issue'; -import { MediaType } from '../constants/media'; -import Issue from '../entity/Issue'; -import notificationManager, { Notification } from '../lib/notifications'; -import { Permission } from '../lib/permissions'; -import logger from '../logger'; @EventSubscriber() export class IssueSubscriber implements EntitySubscriberInterface { diff --git a/server/subscriber/MediaSubscriber.ts b/server/subscriber/MediaSubscriber.ts index 9aaa6166..eecfe6f3 100644 --- a/server/subscriber/MediaSubscriber.ts +++ b/server/subscriber/MediaSubscriber.ts @@ -1,14 +1,18 @@ +import TheMovieDb from '@server/api/themoviedb'; +import { + MediaRequestStatus, + MediaStatus, + MediaType, +} from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; +import { MediaRequest } from '@server/entity/MediaRequest'; +import Season from '@server/entity/Season'; +import notificationManager, { Notification } from '@server/lib/notifications'; +import logger from '@server/logger'; import { truncate } from 'lodash'; import type { EntitySubscriberInterface, UpdateEvent } from 'typeorm'; import { EventSubscriber, In, Not } from 'typeorm'; -import TheMovieDb from '../api/themoviedb'; -import { MediaRequestStatus, MediaStatus, MediaType } from '../constants/media'; -import { getRepository } from '../datasource'; -import Media from '../entity/Media'; -import { MediaRequest } from '../entity/MediaRequest'; -import Season from '../entity/Season'; -import notificationManager, { Notification } from '../lib/notifications'; -import logger from '../logger'; @EventSubscriber() export class MediaSubscriber implements EntitySubscriberInterface { diff --git a/server/tsconfig.json b/server/tsconfig.json index d245100d..ec4b9004 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -4,7 +4,11 @@ "target": "ES2020", "module": "commonjs", "outDir": "../dist", - "noEmit": false + "noEmit": false, + "baseUrl": ".", + "paths": { + "@server/*": ["*"] + } }, "include": ["**/*.ts"] } diff --git a/server/types/express.d.ts b/server/types/express.d.ts index ee7fd972..7b82477a 100644 --- a/server/types/express.d.ts +++ b/server/types/express.d.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ +import type { User } from '@server/entity/User'; import type { NextFunction, Request, Response } from 'express'; -import type { User } from '../entity/User'; declare global { namespace Express { diff --git a/server/utils/appVersion.ts b/server/utils/appVersion.ts index 923d4708..d01a08a9 100644 --- a/server/utils/appVersion.ts +++ b/server/utils/appVersion.ts @@ -1,6 +1,6 @@ +import logger from '@server/logger'; import { existsSync } from 'fs'; import path from 'path'; -import logger from '../logger'; const COMMIT_TAG_PATH = path.join(__dirname, '../../committag.json'); let commitTag = 'local'; diff --git a/server/utils/restartFlag.ts b/server/utils/restartFlag.ts index 8590137a..387ec5ce 100644 --- a/server/utils/restartFlag.ts +++ b/server/utils/restartFlag.ts @@ -1,5 +1,5 @@ -import type { MainSettings } from '../lib/settings'; -import { getSettings } from '../lib/settings'; +import type { MainSettings } from '@server/lib/settings'; +import { getSettings } from '@server/lib/settings'; class RestartFlag { private settings: MainSettings; diff --git a/server/utils/typeHelpers.ts b/server/utils/typeHelpers.ts index 04070244..507ece8c 100644 --- a/server/utils/typeHelpers.ts +++ b/server/utils/typeHelpers.ts @@ -5,7 +5,7 @@ import type { TmdbPersonResult, TmdbTvDetails, TmdbTvResult, -} from '../api/themoviedb/interfaces'; +} from '@server/api/themoviedb/interfaces'; export const isMovie = ( movie: TmdbMovieResult | TmdbTvResult | TmdbPersonResult diff --git a/src/components/AppDataWarning/index.tsx b/src/components/AppDataWarning/index.tsx index 5f2b4f7e..21c3dbae 100644 --- a/src/components/AppDataWarning/index.tsx +++ b/src/components/AppDataWarning/index.tsx @@ -1,6 +1,6 @@ +import Alert from '@app/components/Common/Alert'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import Alert from '../Common/Alert'; const messages = defineMessages({ dockerVolumeMissingDescription: diff --git a/src/components/CollectionDetails/index.tsx b/src/components/CollectionDetails/index.tsx index 8cfbf48c..52bd8a26 100644 --- a/src/components/CollectionDetails/index.tsx +++ b/src/components/CollectionDetails/index.tsx @@ -1,24 +1,24 @@ +import ButtonWithDropdown from '@app/components/Common/ButtonWithDropdown'; +import CachedImage from '@app/components/Common/CachedImage'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import RequestModal from '@app/components/RequestModal'; +import Slider from '@app/components/Slider'; +import StatusBadge from '@app/components/StatusBadge'; +import TitleCard from '@app/components/TitleCard'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; import { DownloadIcon } from '@heroicons/react/outline'; +import { MediaStatus } from '@server/constants/media'; +import type { Collection } from '@server/models/Collection'; import { uniq } from 'lodash'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import { MediaStatus } from '../../../server/constants/media'; -import type { Collection } from '../../../server/models/Collection'; -import useSettings from '../../hooks/useSettings'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Error from '../../pages/_error'; -import ButtonWithDropdown from '../Common/ButtonWithDropdown'; -import CachedImage from '../Common/CachedImage'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import RequestModal from '../RequestModal'; -import Slider from '../Slider'; -import StatusBadge from '../StatusBadge'; -import TitleCard from '../TitleCard'; const messages = defineMessages({ overview: 'Overview', diff --git a/src/components/Common/ButtonWithDropdown/index.tsx b/src/components/Common/ButtonWithDropdown/index.tsx index da5d80f4..edb5a749 100644 --- a/src/components/Common/ButtonWithDropdown/index.tsx +++ b/src/components/Common/ButtonWithDropdown/index.tsx @@ -1,9 +1,9 @@ +import Transition from '@app/components/Transition'; +import useClickOutside from '@app/hooks/useClickOutside'; +import { withProperties } from '@app/utils/typeHelpers'; import { ChevronDownIcon } from '@heroicons/react/solid'; import type { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'react'; import { useRef, useState } from 'react'; -import useClickOutside from '../../../hooks/useClickOutside'; -import { withProperties } from '../../../utils/typeHelpers'; -import Transition from '../../Transition'; interface DropdownItemProps extends AnchorHTMLAttributes { buttonType?: 'primary' | 'ghost'; diff --git a/src/components/Common/CachedImage/index.tsx b/src/components/Common/CachedImage/index.tsx index 5bc93dd7..b1695937 100644 --- a/src/components/Common/CachedImage/index.tsx +++ b/src/components/Common/CachedImage/index.tsx @@ -1,6 +1,6 @@ +import useSettings from '@app/hooks/useSettings'; import type { ImageProps } from 'next/image'; import Image from 'next/image'; -import useSettings from '../../../hooks/useSettings'; /** * The CachedImage component should be used wherever diff --git a/src/components/Common/ConfirmButton/index.tsx b/src/components/Common/ConfirmButton/index.tsx index 7990ec04..1f5756cb 100644 --- a/src/components/Common/ConfirmButton/index.tsx +++ b/src/components/Common/ConfirmButton/index.tsx @@ -1,6 +1,6 @@ +import Button from '@app/components/Common/Button'; +import useClickOutside from '@app/hooks/useClickOutside'; import { useRef, useState } from 'react'; -import useClickOutside from '../../../hooks/useClickOutside'; -import Button from '../Button'; interface ConfirmButtonProps { onClick: () => void; diff --git a/src/components/Common/ImageFader/index.tsx b/src/components/Common/ImageFader/index.tsx index 706f4f43..a5717241 100644 --- a/src/components/Common/ImageFader/index.tsx +++ b/src/components/Common/ImageFader/index.tsx @@ -1,6 +1,6 @@ +import CachedImage from '@app/components/Common/CachedImage'; import type { ForwardRefRenderFunction, HTMLAttributes } from 'react'; import React, { useEffect, useState } from 'react'; -import CachedImage from '../CachedImage'; interface ImageFaderProps extends HTMLAttributes { backgroundImages: string[]; diff --git a/src/components/Common/List/index.tsx b/src/components/Common/List/index.tsx index de601070..32057ed1 100644 --- a/src/components/Common/List/index.tsx +++ b/src/components/Common/List/index.tsx @@ -1,4 +1,4 @@ -import { withProperties } from '../../../utils/typeHelpers'; +import { withProperties } from '@app/utils/typeHelpers'; interface ListItemProps { title: string; diff --git a/src/components/Common/ListView/index.tsx b/src/components/Common/ListView/index.tsx index a99b2939..6f09f768 100644 --- a/src/components/Common/ListView/index.tsx +++ b/src/components/Common/ListView/index.tsx @@ -1,15 +1,15 @@ -import { useIntl } from 'react-intl'; -import type { WatchlistItem } from '../../../../server/interfaces/api/discoverInterfaces'; +import PersonCard from '@app/components/PersonCard'; +import TitleCard from '@app/components/TitleCard'; +import TmdbTitleCard from '@app/components/TitleCard/TmdbTitleCard'; +import useVerticalScroll from '@app/hooks/useVerticalScroll'; +import globalMessages from '@app/i18n/globalMessages'; +import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces'; import type { MovieResult, PersonResult, TvResult, -} from '../../../../server/models/Search'; -import useVerticalScroll from '../../../hooks/useVerticalScroll'; -import globalMessages from '../../../i18n/globalMessages'; -import PersonCard from '../../PersonCard'; -import TitleCard from '../../TitleCard'; -import TmdbTitleCard from '../../TitleCard/TmdbTitleCard'; +} from '@server/models/Search'; +import { useIntl } from 'react-intl'; type ListViewProps = { items?: (TvResult | MovieResult | PersonResult)[]; diff --git a/src/components/Common/Modal/index.tsx b/src/components/Common/Modal/index.tsx index c26416dc..c726d57a 100644 --- a/src/components/Common/Modal/index.tsx +++ b/src/components/Common/Modal/index.tsx @@ -1,15 +1,15 @@ +import type { ButtonType } from '@app/components/Common/Button'; +import Button from '@app/components/Common/Button'; +import CachedImage from '@app/components/Common/CachedImage'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import Transition from '@app/components/Transition'; +import useClickOutside from '@app/hooks/useClickOutside'; +import { useLockBodyScroll } from '@app/hooks/useLockBodyScroll'; +import globalMessages from '@app/i18n/globalMessages'; import type { MouseEvent } from 'react'; import { useRef } from 'react'; import ReactDOM from 'react-dom'; import { useIntl } from 'react-intl'; -import useClickOutside from '../../../hooks/useClickOutside'; -import { useLockBodyScroll } from '../../../hooks/useLockBodyScroll'; -import globalMessages from '../../../i18n/globalMessages'; -import Transition from '../../Transition'; -import type { ButtonType } from '../Button'; -import Button from '../Button'; -import CachedImage from '../CachedImage'; -import LoadingSpinner from '../LoadingSpinner'; interface ModalProps { title?: string; diff --git a/src/components/Common/PageTitle/index.tsx b/src/components/Common/PageTitle/index.tsx index 831fa929..288a0b37 100644 --- a/src/components/Common/PageTitle/index.tsx +++ b/src/components/Common/PageTitle/index.tsx @@ -1,5 +1,5 @@ +import useSettings from '@app/hooks/useSettings'; import Head from 'next/head'; -import useSettings from '../../../hooks/useSettings'; interface PageTitleProps { title: string | (string | undefined)[]; diff --git a/src/components/Common/PlayButton/index.tsx b/src/components/Common/PlayButton/index.tsx index 15164be2..01d3a012 100644 --- a/src/components/Common/PlayButton/index.tsx +++ b/src/components/Common/PlayButton/index.tsx @@ -1,4 +1,4 @@ -import ButtonWithDropdown from '../ButtonWithDropdown'; +import ButtonWithDropdown from '@app/components/Common/ButtonWithDropdown'; interface PlayButtonProps { links: PlayButtonLink[]; diff --git a/src/components/Common/SettingsTabs/index.tsx b/src/components/Common/SettingsTabs/index.tsx index 045416fc..8ee46fea 100644 --- a/src/components/Common/SettingsTabs/index.tsx +++ b/src/components/Common/SettingsTabs/index.tsx @@ -1,8 +1,8 @@ +import { useUser } from '@app/hooks/useUser'; +import type { Permission } from '@server/lib/permissions'; +import { hasPermission } from '@server/lib/permissions'; import Link from 'next/link'; import { useRouter } from 'next/router'; -import type { Permission } from '../../../../server/lib/permissions'; -import { hasPermission } from '../../../../server/lib/permissions'; -import { useUser } from '../../../hooks/useUser'; export interface SettingsRoute { text: string; diff --git a/src/components/Common/SlideOver/index.tsx b/src/components/Common/SlideOver/index.tsx index 542ea8df..895745a9 100644 --- a/src/components/Common/SlideOver/index.tsx +++ b/src/components/Common/SlideOver/index.tsx @@ -1,9 +1,9 @@ /* eslint-disable jsx-a11y/click-events-have-key-events */ +import Transition from '@app/components/Transition'; +import { useLockBodyScroll } from '@app/hooks/useLockBodyScroll'; import { XIcon } from '@heroicons/react/outline'; import { useEffect, useRef, useState } from 'react'; import ReactDOM from 'react-dom'; -import { useLockBodyScroll } from '../../../hooks/useLockBodyScroll'; -import Transition from '../../Transition'; interface SlideOverProps { show?: boolean; diff --git a/src/components/Common/Table/index.tsx b/src/components/Common/Table/index.tsx index 906bd39f..a286de69 100644 --- a/src/components/Common/Table/index.tsx +++ b/src/components/Common/Table/index.tsx @@ -1,4 +1,4 @@ -import { withProperties } from '../../../utils/typeHelpers'; +import { withProperties } from '@app/utils/typeHelpers'; type TBodyProps = { children: React.ReactNode; diff --git a/src/components/Discover/DiscoverMovieGenre/index.tsx b/src/components/Discover/DiscoverMovieGenre/index.tsx index f498c55f..d31921da 100644 --- a/src/components/Discover/DiscoverMovieGenre/index.tsx +++ b/src/components/Discover/DiscoverMovieGenre/index.tsx @@ -1,12 +1,12 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import type { MovieResult } from '@server/models/Search'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; -import type { MovieResult } from '../../../../server/models/Search'; -import useDiscover from '../../../hooks/useDiscover'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import ListView from '../../Common/ListView'; -import PageTitle from '../../Common/PageTitle'; const messages = defineMessages({ genreMovies: '{genre} Movies', diff --git a/src/components/Discover/DiscoverMovieLanguage/index.tsx b/src/components/Discover/DiscoverMovieLanguage/index.tsx index effd23ab..e9a274fa 100644 --- a/src/components/Discover/DiscoverMovieLanguage/index.tsx +++ b/src/components/Discover/DiscoverMovieLanguage/index.tsx @@ -1,12 +1,12 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import type { MovieResult } from '@server/models/Search'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; -import type { MovieResult } from '../../../../server/models/Search'; -import useDiscover from '../../../hooks/useDiscover'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import ListView from '../../Common/ListView'; -import PageTitle from '../../Common/PageTitle'; const messages = defineMessages({ languageMovies: '{language} Movies', diff --git a/src/components/Discover/DiscoverMovies.tsx b/src/components/Discover/DiscoverMovies.tsx index 56e7ac35..b9ec8dea 100644 --- a/src/components/Discover/DiscoverMovies.tsx +++ b/src/components/Discover/DiscoverMovies.tsx @@ -1,10 +1,10 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { MovieResult } from '@server/models/Search'; import { defineMessages, useIntl } from 'react-intl'; -import type { MovieResult } from '../../../server/models/Search'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; const messages = defineMessages({ discovermovies: 'Popular Movies', diff --git a/src/components/Discover/DiscoverNetwork/index.tsx b/src/components/Discover/DiscoverNetwork/index.tsx index af8087a6..f09fef37 100644 --- a/src/components/Discover/DiscoverNetwork/index.tsx +++ b/src/components/Discover/DiscoverNetwork/index.tsx @@ -1,13 +1,13 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import type { TvNetwork } from '@server/models/common'; +import type { TvResult } from '@server/models/Search'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; -import type { TvNetwork } from '../../../../server/models/common'; -import type { TvResult } from '../../../../server/models/Search'; -import useDiscover from '../../../hooks/useDiscover'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import ListView from '../../Common/ListView'; -import PageTitle from '../../Common/PageTitle'; const messages = defineMessages({ networkSeries: '{network} Series', diff --git a/src/components/Discover/DiscoverStudio/index.tsx b/src/components/Discover/DiscoverStudio/index.tsx index 6f2d5446..1d78748b 100644 --- a/src/components/Discover/DiscoverStudio/index.tsx +++ b/src/components/Discover/DiscoverStudio/index.tsx @@ -1,13 +1,13 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import type { ProductionCompany } from '@server/models/common'; +import type { MovieResult } from '@server/models/Search'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; -import type { ProductionCompany } from '../../../../server/models/common'; -import type { MovieResult } from '../../../../server/models/Search'; -import useDiscover from '../../../hooks/useDiscover'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import ListView from '../../Common/ListView'; -import PageTitle from '../../Common/PageTitle'; const messages = defineMessages({ studioMovies: '{studio} Movies', diff --git a/src/components/Discover/DiscoverTv.tsx b/src/components/Discover/DiscoverTv.tsx index 099e55b2..404b1aa5 100644 --- a/src/components/Discover/DiscoverTv.tsx +++ b/src/components/Discover/DiscoverTv.tsx @@ -1,10 +1,10 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { TvResult } from '@server/models/Search'; import { defineMessages, useIntl } from 'react-intl'; -import type { TvResult } from '../../../server/models/Search'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; const messages = defineMessages({ discovertv: 'Popular Series', diff --git a/src/components/Discover/DiscoverTvGenre/index.tsx b/src/components/Discover/DiscoverTvGenre/index.tsx index 8018a118..9602fbb8 100644 --- a/src/components/Discover/DiscoverTvGenre/index.tsx +++ b/src/components/Discover/DiscoverTvGenre/index.tsx @@ -1,12 +1,12 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import type { TvResult } from '@server/models/Search'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; -import type { TvResult } from '../../../../server/models/Search'; -import useDiscover from '../../../hooks/useDiscover'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import ListView from '../../Common/ListView'; -import PageTitle from '../../Common/PageTitle'; const messages = defineMessages({ genreSeries: '{genre} Series', diff --git a/src/components/Discover/DiscoverTvLanguage/index.tsx b/src/components/Discover/DiscoverTvLanguage/index.tsx index fdff7c75..b6c710e9 100644 --- a/src/components/Discover/DiscoverTvLanguage/index.tsx +++ b/src/components/Discover/DiscoverTvLanguage/index.tsx @@ -1,12 +1,12 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import type { TvResult } from '@server/models/Search'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; -import type { TvResult } from '../../../../server/models/Search'; -import useDiscover from '../../../hooks/useDiscover'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import ListView from '../../Common/ListView'; -import PageTitle from '../../Common/PageTitle'; const messages = defineMessages({ languageSeries: '{language} Series', diff --git a/src/components/Discover/DiscoverTvUpcoming.tsx b/src/components/Discover/DiscoverTvUpcoming.tsx index ddfc5d1f..2a693964 100644 --- a/src/components/Discover/DiscoverTvUpcoming.tsx +++ b/src/components/Discover/DiscoverTvUpcoming.tsx @@ -1,10 +1,10 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { TvResult } from '@server/models/Search'; import { defineMessages, useIntl } from 'react-intl'; -import type { TvResult } from '../../../server/models/Search'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; const messages = defineMessages({ upcomingtv: 'Upcoming Series', diff --git a/src/components/Discover/DiscoverWatchlist/index.tsx b/src/components/Discover/DiscoverWatchlist/index.tsx index 3d181d3a..00cfe780 100644 --- a/src/components/Discover/DiscoverWatchlist/index.tsx +++ b/src/components/Discover/DiscoverWatchlist/index.tsx @@ -1,10 +1,10 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces'; import { defineMessages, useIntl } from 'react-intl'; -import type { WatchlistItem } from '../../../../server/interfaces/api/discoverInterfaces'; -import useDiscover from '../../../hooks/useDiscover'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import ListView from '../../Common/ListView'; -import PageTitle from '../../Common/PageTitle'; const messages = defineMessages({ discoverwatchlist: 'Your Plex Watchlist', diff --git a/src/components/Discover/MovieGenreList/index.tsx b/src/components/Discover/MovieGenreList/index.tsx index 03e76588..f19f5770 100644 --- a/src/components/Discover/MovieGenreList/index.tsx +++ b/src/components/Discover/MovieGenreList/index.tsx @@ -1,12 +1,12 @@ +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import { genreColorMap } from '@app/components/Discover/constants'; +import GenreCard from '@app/components/GenreCard'; +import Error from '@app/pages/_error'; +import type { GenreSliderItem } from '@server/interfaces/api/discoverInterfaces'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { GenreSliderItem } from '../../../../server/interfaces/api/discoverInterfaces'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import GenreCard from '../../GenreCard'; -import { genreColorMap } from '../constants'; const messages = defineMessages({ moviegenres: 'Movie Genres', diff --git a/src/components/Discover/MovieGenreSlider/index.tsx b/src/components/Discover/MovieGenreSlider/index.tsx index d17b2d37..4899d349 100644 --- a/src/components/Discover/MovieGenreSlider/index.tsx +++ b/src/components/Discover/MovieGenreSlider/index.tsx @@ -1,12 +1,12 @@ +import { genreColorMap } from '@app/components/Discover/constants'; +import GenreCard from '@app/components/GenreCard'; +import Slider from '@app/components/Slider'; import { ArrowCircleRightIcon } from '@heroicons/react/outline'; +import type { GenreSliderItem } from '@server/interfaces/api/discoverInterfaces'; import Link from 'next/link'; import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { GenreSliderItem } from '../../../../server/interfaces/api/discoverInterfaces'; -import GenreCard from '../../GenreCard'; -import Slider from '../../Slider'; -import { genreColorMap } from '../constants'; const messages = defineMessages({ moviegenres: 'Movie Genres', diff --git a/src/components/Discover/NetworkSlider/index.tsx b/src/components/Discover/NetworkSlider/index.tsx index c84057ef..8973cbd1 100644 --- a/src/components/Discover/NetworkSlider/index.tsx +++ b/src/components/Discover/NetworkSlider/index.tsx @@ -1,6 +1,6 @@ +import CompanyCard from '@app/components/CompanyCard'; +import Slider from '@app/components/Slider'; import { defineMessages, useIntl } from 'react-intl'; -import CompanyCard from '../../CompanyCard'; -import Slider from '../../Slider'; const messages = defineMessages({ networks: 'Networks', diff --git a/src/components/Discover/StudioSlider/index.tsx b/src/components/Discover/StudioSlider/index.tsx index b50fc23f..3f136142 100644 --- a/src/components/Discover/StudioSlider/index.tsx +++ b/src/components/Discover/StudioSlider/index.tsx @@ -1,6 +1,6 @@ +import CompanyCard from '@app/components/CompanyCard'; +import Slider from '@app/components/Slider'; import { defineMessages, useIntl } from 'react-intl'; -import CompanyCard from '../../CompanyCard'; -import Slider from '../../Slider'; const messages = defineMessages({ studios: 'Studios', diff --git a/src/components/Discover/Trending.tsx b/src/components/Discover/Trending.tsx index 98f0ed0c..5210e7d3 100644 --- a/src/components/Discover/Trending.tsx +++ b/src/components/Discover/Trending.tsx @@ -1,14 +1,14 @@ -import { defineMessages, useIntl } from 'react-intl'; +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; import type { MovieResult, PersonResult, TvResult, -} from '../../../server/models/Search'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; +} from '@server/models/Search'; +import { defineMessages, useIntl } from 'react-intl'; const messages = defineMessages({ trending: 'Trending', diff --git a/src/components/Discover/TvGenreList/index.tsx b/src/components/Discover/TvGenreList/index.tsx index 4a82e008..391c51f2 100644 --- a/src/components/Discover/TvGenreList/index.tsx +++ b/src/components/Discover/TvGenreList/index.tsx @@ -1,12 +1,12 @@ +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import { genreColorMap } from '@app/components/Discover/constants'; +import GenreCard from '@app/components/GenreCard'; +import Error from '@app/pages/_error'; +import type { GenreSliderItem } from '@server/interfaces/api/discoverInterfaces'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { GenreSliderItem } from '../../../../server/interfaces/api/discoverInterfaces'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import GenreCard from '../../GenreCard'; -import { genreColorMap } from '../constants'; const messages = defineMessages({ seriesgenres: 'Series Genres', diff --git a/src/components/Discover/TvGenreSlider/index.tsx b/src/components/Discover/TvGenreSlider/index.tsx index 8398e4c3..820012c3 100644 --- a/src/components/Discover/TvGenreSlider/index.tsx +++ b/src/components/Discover/TvGenreSlider/index.tsx @@ -1,12 +1,12 @@ +import { genreColorMap } from '@app/components/Discover/constants'; +import GenreCard from '@app/components/GenreCard'; +import Slider from '@app/components/Slider'; import { ArrowCircleRightIcon } from '@heroicons/react/outline'; +import type { GenreSliderItem } from '@server/interfaces/api/discoverInterfaces'; import Link from 'next/link'; import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { GenreSliderItem } from '../../../../server/interfaces/api/discoverInterfaces'; -import GenreCard from '../../GenreCard'; -import Slider from '../../Slider'; -import { genreColorMap } from '../constants'; const messages = defineMessages({ tvgenres: 'Series Genres', diff --git a/src/components/Discover/Upcoming.tsx b/src/components/Discover/Upcoming.tsx index 55256a40..b556e6f9 100644 --- a/src/components/Discover/Upcoming.tsx +++ b/src/components/Discover/Upcoming.tsx @@ -1,10 +1,10 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { MovieResult } from '@server/models/Search'; import { defineMessages, useIntl } from 'react-intl'; -import type { MovieResult } from '../../../server/models/Search'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; const messages = defineMessages({ upcomingmovies: 'Upcoming Movies', diff --git a/src/components/Discover/index.tsx b/src/components/Discover/index.tsx index bc724830..2e9cf368 100644 --- a/src/components/Discover/index.tsx +++ b/src/components/Discover/index.tsx @@ -1,20 +1,20 @@ +import PageTitle from '@app/components/Common/PageTitle'; +import MovieGenreSlider from '@app/components/Discover/MovieGenreSlider'; +import NetworkSlider from '@app/components/Discover/NetworkSlider'; +import StudioSlider from '@app/components/Discover/StudioSlider'; +import TvGenreSlider from '@app/components/Discover/TvGenreSlider'; +import MediaSlider from '@app/components/MediaSlider'; +import RequestCard from '@app/components/RequestCard'; +import Slider from '@app/components/Slider'; +import TmdbTitleCard from '@app/components/TitleCard/TmdbTitleCard'; +import { Permission, UserType, useUser } from '@app/hooks/useUser'; import { ArrowCircleRightIcon } from '@heroicons/react/outline'; +import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces'; +import type { MediaResultsResponse } from '@server/interfaces/api/mediaInterfaces'; +import type { RequestResultsResponse } from '@server/interfaces/api/requestInterfaces'; import Link from 'next/link'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { WatchlistItem } from '../../../server/interfaces/api/discoverInterfaces'; -import type { MediaResultsResponse } from '../../../server/interfaces/api/mediaInterfaces'; -import type { RequestResultsResponse } from '../../../server/interfaces/api/requestInterfaces'; -import { Permission, UserType, useUser } from '../../hooks/useUser'; -import PageTitle from '../Common/PageTitle'; -import MediaSlider from '../MediaSlider'; -import RequestCard from '../RequestCard'; -import Slider from '../Slider'; -import TmdbTitleCard from '../TitleCard/TmdbTitleCard'; -import MovieGenreSlider from './MovieGenreSlider'; -import NetworkSlider from './NetworkSlider'; -import StudioSlider from './StudioSlider'; -import TvGenreSlider from './TvGenreSlider'; const messages = defineMessages({ discover: 'Discover', diff --git a/src/components/DownloadBlock/index.tsx b/src/components/DownloadBlock/index.tsx index 61cca7c7..0597e3a6 100644 --- a/src/components/DownloadBlock/index.tsx +++ b/src/components/DownloadBlock/index.tsx @@ -1,6 +1,6 @@ +import Badge from '@app/components/Common/Badge'; +import type { DownloadingItem } from '@server/lib/downloadtracker'; import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl'; -import type { DownloadingItem } from '../../../server/lib/downloadtracker'; -import Badge from '../Common/Badge'; const messages = defineMessages({ estimatedtime: 'Estimated {time}', diff --git a/src/components/ExternalLinkBlock/index.tsx b/src/components/ExternalLinkBlock/index.tsx index 4753c6f5..fc7518f6 100644 --- a/src/components/ExternalLinkBlock/index.tsx +++ b/src/components/ExternalLinkBlock/index.tsx @@ -1,11 +1,11 @@ -import { MediaType } from '../../../server/constants/media'; -import ImdbLogo from '../../assets/services/imdb.svg'; -import PlexLogo from '../../assets/services/plex.svg'; -import RTLogo from '../../assets/services/rt.svg'; -import TmdbLogo from '../../assets/services/tmdb.svg'; -import TraktLogo from '../../assets/services/trakt.svg'; -import TvdbLogo from '../../assets/services/tvdb.svg'; -import useLocale from '../../hooks/useLocale'; +import ImdbLogo from '@app/assets/services/imdb.svg'; +import PlexLogo from '@app/assets/services/plex.svg'; +import RTLogo from '@app/assets/services/rt.svg'; +import TmdbLogo from '@app/assets/services/tmdb.svg'; +import TraktLogo from '@app/assets/services/trakt.svg'; +import TvdbLogo from '@app/assets/services/tvdb.svg'; +import useLocale from '@app/hooks/useLocale'; +import { MediaType } from '@server/constants/media'; interface ExternalLinkBlockProps { mediaType: 'movie' | 'tv'; diff --git a/src/components/GenreCard/index.tsx b/src/components/GenreCard/index.tsx index 8dfcbd6c..5171bd81 100644 --- a/src/components/GenreCard/index.tsx +++ b/src/components/GenreCard/index.tsx @@ -1,7 +1,7 @@ +import CachedImage from '@app/components/Common/CachedImage'; +import { withProperties } from '@app/utils/typeHelpers'; import Link from 'next/link'; import { useState } from 'react'; -import { withProperties } from '../../utils/typeHelpers'; -import CachedImage from '../Common/CachedImage'; interface GenreCardProps { name: string; diff --git a/src/components/IssueBlock/index.tsx b/src/components/IssueBlock/index.tsx index b33fdeae..c337c721 100644 --- a/src/components/IssueBlock/index.tsx +++ b/src/components/IssueBlock/index.tsx @@ -1,15 +1,15 @@ +import Button from '@app/components/Common/Button'; +import { issueOptions } from '@app/components/IssueModal/constants'; +import { useUser } from '@app/hooks/useUser'; import { CalendarIcon, ExclamationIcon, EyeIcon, UserIcon, } from '@heroicons/react/solid'; +import type Issue from '@server/entity/Issue'; import Link from 'next/link'; import { useIntl } from 'react-intl'; -import type Issue from '../../../server/entity/Issue'; -import { useUser } from '../../hooks/useUser'; -import Button from '../Common/Button'; -import { issueOptions } from '../IssueModal/constants'; interface IssueBlockProps { issue: Issue; diff --git a/src/components/IssueDetails/IssueComment/index.tsx b/src/components/IssueDetails/IssueComment/index.tsx index 141ed2a0..2feba8ec 100644 --- a/src/components/IssueDetails/IssueComment/index.tsx +++ b/src/components/IssueDetails/IssueComment/index.tsx @@ -1,6 +1,11 @@ +import Button from '@app/components/Common/Button'; +import Modal from '@app/components/Common/Modal'; +import Transition from '@app/components/Transition'; +import { Permission, useUser } from '@app/hooks/useUser'; import { Menu } from '@headlessui/react'; import { ExclamationIcon } from '@heroicons/react/outline'; import { DotsVerticalIcon } from '@heroicons/react/solid'; +import type { default as IssueCommentType } from '@server/entity/IssueComment'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import Link from 'next/link'; @@ -8,11 +13,6 @@ import { useState } from 'react'; import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl'; import ReactMarkdown from 'react-markdown'; import * as Yup from 'yup'; -import type { default as IssueCommentType } from '../../../../server/entity/IssueComment'; -import { Permission, useUser } from '../../../hooks/useUser'; -import Button from '../../Common/Button'; -import Modal from '../../Common/Modal'; -import Transition from '../../Transition'; const messages = defineMessages({ postedby: 'Posted {relativeTime} by {username}', diff --git a/src/components/IssueDetails/IssueDescription/index.tsx b/src/components/IssueDetails/IssueDescription/index.tsx index ccd14ba7..3a7810f4 100644 --- a/src/components/IssueDetails/IssueDescription/index.tsx +++ b/src/components/IssueDetails/IssueDescription/index.tsx @@ -1,12 +1,12 @@ +import Button from '@app/components/Common/Button'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { Menu, Transition } from '@headlessui/react'; import { DotsVerticalIcon } from '@heroicons/react/solid'; import { Field, Form, Formik } from 'formik'; import { Fragment, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import ReactMarkdown from 'react-markdown'; -import { Permission, useUser } from '../../../hooks/useUser'; -import globalMessages from '../../../i18n/globalMessages'; -import Button from '../../Common/Button'; const messages = defineMessages({ description: 'Description', diff --git a/src/components/IssueDetails/index.tsx b/src/components/IssueDetails/index.tsx index c5fe5eb9..f798d998 100644 --- a/src/components/IssueDetails/index.tsx +++ b/src/components/IssueDetails/index.tsx @@ -1,3 +1,16 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import CachedImage from '@app/components/Common/CachedImage'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import Modal from '@app/components/Common/Modal'; +import PageTitle from '@app/components/Common/PageTitle'; +import IssueComment from '@app/components/IssueDetails/IssueComment'; +import IssueDescription from '@app/components/IssueDetails/IssueDescription'; +import { issueOptions } from '@app/components/IssueModal/constants'; +import Transition from '@app/components/Transition'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; import { ChatIcon, CheckCircleIcon, @@ -6,6 +19,11 @@ import { ServerIcon, } from '@heroicons/react/outline'; import { RefreshIcon } from '@heroicons/react/solid'; +import { IssueStatus } from '@server/constants/issue'; +import { MediaType } from '@server/constants/media'; +import type Issue from '@server/entity/Issue'; +import type { MovieDetails } from '@server/models/Movie'; +import type { TvDetails } from '@server/models/Tv'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import Link from 'next/link'; @@ -15,24 +33,6 @@ import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import { IssueStatus } from '../../../server/constants/issue'; -import { MediaType } from '../../../server/constants/media'; -import type Issue from '../../../server/entity/Issue'; -import type { MovieDetails } from '../../../server/models/Movie'; -import type { TvDetails } from '../../../server/models/Tv'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Error from '../../pages/_error'; -import Badge from '../Common/Badge'; -import Button from '../Common/Button'; -import CachedImage from '../Common/CachedImage'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import Modal from '../Common/Modal'; -import PageTitle from '../Common/PageTitle'; -import { issueOptions } from '../IssueModal/constants'; -import Transition from '../Transition'; -import IssueComment from './IssueComment'; -import IssueDescription from './IssueDescription'; const messages = defineMessages({ openedby: '#{issueId} opened {relativeTime} by {username}', diff --git a/src/components/IssueList/IssueItem/index.tsx b/src/components/IssueList/IssueItem/index.tsx index d24193f4..00e48631 100644 --- a/src/components/IssueList/IssueItem/index.tsx +++ b/src/components/IssueList/IssueItem/index.tsx @@ -1,19 +1,19 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import CachedImage from '@app/components/Common/CachedImage'; +import { issueOptions } from '@app/components/IssueModal/constants'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { EyeIcon } from '@heroicons/react/solid'; +import { IssueStatus } from '@server/constants/issue'; +import { MediaType } from '@server/constants/media'; +import type Issue from '@server/entity/Issue'; +import type { MovieDetails } from '@server/models/Movie'; +import type { TvDetails } from '@server/models/Tv'; import Link from 'next/link'; import { useInView } from 'react-intersection-observer'; import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl'; import useSWR from 'swr'; -import { IssueStatus } from '../../../../server/constants/issue'; -import { MediaType } from '../../../../server/constants/media'; -import type Issue from '../../../../server/entity/Issue'; -import type { MovieDetails } from '../../../../server/models/Movie'; -import type { TvDetails } from '../../../../server/models/Tv'; -import { Permission, useUser } from '../../../hooks/useUser'; -import globalMessages from '../../../i18n/globalMessages'; -import Badge from '../../Common/Badge'; -import Button from '../../Common/Button'; -import CachedImage from '../../Common/CachedImage'; -import { issueOptions } from '../../IssueModal/constants'; const messages = defineMessages({ openeduserdate: '{date} by {user}', diff --git a/src/components/IssueList/index.tsx b/src/components/IssueList/index.tsx index d171dd9a..0c2ee3a9 100644 --- a/src/components/IssueList/index.tsx +++ b/src/components/IssueList/index.tsx @@ -1,21 +1,21 @@ +import Button from '@app/components/Common/Button'; +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import IssueItem from '@app/components/IssueList/IssueItem'; +import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams'; +import globalMessages from '@app/i18n/globalMessages'; import { ChevronLeftIcon, ChevronRightIcon, FilterIcon, SortDescendingIcon, } from '@heroicons/react/solid'; +import type { IssueResultsResponse } from '@server/interfaces/api/issueInterfaces'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { IssueResultsResponse } from '../../../server/interfaces/api/issueInterfaces'; -import Button from '../../components/Common/Button'; -import { useUpdateQueryParams } from '../../hooks/useUpdateQueryParams'; -import globalMessages from '../../i18n/globalMessages'; -import Header from '../Common/Header'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import IssueItem from './IssueItem'; const messages = defineMessages({ issues: 'Issues', diff --git a/src/components/IssueModal/CreateIssueModal/index.tsx b/src/components/IssueModal/CreateIssueModal/index.tsx index a746514a..93510988 100644 --- a/src/components/IssueModal/CreateIssueModal/index.tsx +++ b/src/components/IssueModal/CreateIssueModal/index.tsx @@ -1,6 +1,16 @@ +import Button from '@app/components/Common/Button'; +import Modal from '@app/components/Common/Modal'; +import { issueOptions } from '@app/components/IssueModal/constants'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { RadioGroup } from '@headlessui/react'; import { ExclamationIcon } from '@heroicons/react/outline'; import { ArrowCircleRightIcon } from '@heroicons/react/solid'; +import { MediaStatus } from '@server/constants/media'; +import type Issue from '@server/entity/Issue'; +import type { MovieDetails } from '@server/models/Movie'; +import type { TvDetails } from '@server/models/Tv'; import axios from 'axios'; import { Field, Formik } from 'formik'; import Link from 'next/link'; @@ -8,16 +18,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import { MediaStatus } from '../../../../server/constants/media'; -import type Issue from '../../../../server/entity/Issue'; -import type { MovieDetails } from '../../../../server/models/Movie'; -import type { TvDetails } from '../../../../server/models/Tv'; -import useSettings from '../../../hooks/useSettings'; -import { Permission, useUser } from '../../../hooks/useUser'; -import globalMessages from '../../../i18n/globalMessages'; -import Button from '../../Common/Button'; -import Modal from '../../Common/Modal'; -import { issueOptions } from '../constants'; const messages = defineMessages({ validationMessageRequired: 'You must provide a description', diff --git a/src/components/IssueModal/constants.ts b/src/components/IssueModal/constants.ts index f658e223..7552c633 100644 --- a/src/components/IssueModal/constants.ts +++ b/src/components/IssueModal/constants.ts @@ -1,6 +1,6 @@ +import { IssueType } from '@server/constants/issue'; import type { MessageDescriptor } from 'react-intl'; import { defineMessages } from 'react-intl'; -import { IssueType } from '../../../server/constants/issue'; const messages = defineMessages({ issueAudio: 'Audio', diff --git a/src/components/IssueModal/index.tsx b/src/components/IssueModal/index.tsx index a05581b4..0b3b4696 100644 --- a/src/components/IssueModal/index.tsx +++ b/src/components/IssueModal/index.tsx @@ -1,5 +1,5 @@ -import Transition from '../Transition'; -import CreateIssueModal from './CreateIssueModal'; +import CreateIssueModal from '@app/components/IssueModal/CreateIssueModal'; +import Transition from '@app/components/Transition'; interface IssueModalProps { show?: boolean; diff --git a/src/components/LanguageSelector/index.tsx b/src/components/LanguageSelector/index.tsx index a6396746..d8e4cc2f 100644 --- a/src/components/LanguageSelector/index.tsx +++ b/src/components/LanguageSelector/index.tsx @@ -1,11 +1,11 @@ +import globalMessages from '@app/i18n/globalMessages'; +import type { Language } from '@server/lib/settings'; import { sortBy } from 'lodash'; import { useMemo } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import type { CSSObjectWithLabel } from 'react-select'; import Select from 'react-select'; import useSWR from 'swr'; -import type { Language } from '../../../server/lib/settings'; -import globalMessages from '../../i18n/globalMessages'; const messages = defineMessages({ originalLanguageDefault: 'All Languages', diff --git a/src/components/Layout/LanguagePicker/index.tsx b/src/components/Layout/LanguagePicker/index.tsx index a06ae249..0fe70573 100644 --- a/src/components/Layout/LanguagePicker/index.tsx +++ b/src/components/Layout/LanguagePicker/index.tsx @@ -1,11 +1,11 @@ +import Transition from '@app/components/Transition'; +import type { AvailableLocale } from '@app/context/LanguageContext'; +import { availableLanguages } from '@app/context/LanguageContext'; +import useClickOutside from '@app/hooks/useClickOutside'; +import useLocale from '@app/hooks/useLocale'; import { TranslateIcon } from '@heroicons/react/solid'; import { useRef, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import type { AvailableLocale } from '../../../context/LanguageContext'; -import { availableLanguages } from '../../../context/LanguageContext'; -import useClickOutside from '../../../hooks/useClickOutside'; -import useLocale from '../../../hooks/useLocale'; -import Transition from '../../Transition'; const messages = defineMessages({ displaylanguage: 'Display Language', diff --git a/src/components/Layout/SearchInput/index.tsx b/src/components/Layout/SearchInput/index.tsx index a569d4c9..3c971e37 100644 --- a/src/components/Layout/SearchInput/index.tsx +++ b/src/components/Layout/SearchInput/index.tsx @@ -1,7 +1,7 @@ +import useSearchInput from '@app/hooks/useSearchInput'; import { XCircleIcon } from '@heroicons/react/outline'; import { SearchIcon } from '@heroicons/react/solid'; import { defineMessages, useIntl } from 'react-intl'; -import useSearchInput from '../../../hooks/useSearchInput'; const messages = defineMessages({ searchPlaceholder: 'Search Movies & TV', diff --git a/src/components/Layout/Sidebar/index.tsx b/src/components/Layout/Sidebar/index.tsx index 81521388..18d91c66 100644 --- a/src/components/Layout/Sidebar/index.tsx +++ b/src/components/Layout/Sidebar/index.tsx @@ -1,3 +1,7 @@ +import VersionStatus from '@app/components/Layout/VersionStatus'; +import Transition from '@app/components/Transition'; +import useClickOutside from '@app/hooks/useClickOutside'; +import { Permission, useUser } from '@app/hooks/useUser'; import { ClockIcon, CogIcon, @@ -10,10 +14,6 @@ import Link from 'next/link'; import { useRouter } from 'next/router'; import { useRef } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import useClickOutside from '../../../hooks/useClickOutside'; -import { Permission, useUser } from '../../../hooks/useUser'; -import Transition from '../../Transition'; -import VersionStatus from '../VersionStatus'; const messages = defineMessages({ dashboard: 'Discover', diff --git a/src/components/Layout/UserDropdown/index.tsx b/src/components/Layout/UserDropdown/index.tsx index e2e6cf13..0c26e22f 100644 --- a/src/components/Layout/UserDropdown/index.tsx +++ b/src/components/Layout/UserDropdown/index.tsx @@ -1,12 +1,12 @@ +import Transition from '@app/components/Transition'; +import useClickOutside from '@app/hooks/useClickOutside'; +import { useUser } from '@app/hooks/useUser'; import { LogoutIcon } from '@heroicons/react/outline'; import { CogIcon, UserIcon } from '@heroicons/react/solid'; import axios from 'axios'; import Link from 'next/link'; import { useRef, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import useClickOutside from '../../../hooks/useClickOutside'; -import { useUser } from '../../../hooks/useUser'; -import Transition from '../../Transition'; const messages = defineMessages({ myprofile: 'Profile', diff --git a/src/components/Layout/VersionStatus/index.tsx b/src/components/Layout/VersionStatus/index.tsx index 1bdc6e47..515ff20e 100644 --- a/src/components/Layout/VersionStatus/index.tsx +++ b/src/components/Layout/VersionStatus/index.tsx @@ -4,10 +4,10 @@ import { CodeIcon, ServerIcon, } from '@heroicons/react/outline'; +import type { StatusResponse } from '@server/interfaces/api/settingsInterfaces'; import Link from 'next/link'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { StatusResponse } from '../../../../server/interfaces/api/settingsInterfaces'; const messages = defineMessages({ streamdevelop: 'Overseerr Develop', diff --git a/src/components/Layout/index.tsx b/src/components/Layout/index.tsx index 60e0b5a4..5cff7aaa 100644 --- a/src/components/Layout/index.tsx +++ b/src/components/Layout/index.tsx @@ -1,14 +1,14 @@ +import SearchInput from '@app/components/Layout/SearchInput'; +import Sidebar from '@app/components/Layout/Sidebar'; +import UserDropdown from '@app/components/Layout/UserDropdown'; +import type { AvailableLocale } from '@app/context/LanguageContext'; +import useLocale from '@app/hooks/useLocale'; +import useSettings from '@app/hooks/useSettings'; +import { useUser } from '@app/hooks/useUser'; import { MenuAlt2Icon } from '@heroicons/react/outline'; import { ArrowLeftIcon } from '@heroicons/react/solid'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; -import type { AvailableLocale } from '../../context/LanguageContext'; -import useLocale from '../../hooks/useLocale'; -import useSettings from '../../hooks/useSettings'; -import { useUser } from '../../hooks/useUser'; -import SearchInput from './SearchInput'; -import Sidebar from './Sidebar'; -import UserDropdown from './UserDropdown'; type LayoutProps = { children: React.ReactNode; diff --git a/src/components/Login/LocalLogin.tsx b/src/components/Login/LocalLogin.tsx index a7dcfc4e..5ea2a01c 100644 --- a/src/components/Login/LocalLogin.tsx +++ b/src/components/Login/LocalLogin.tsx @@ -1,3 +1,6 @@ +import Button from '@app/components/Common/Button'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import useSettings from '@app/hooks/useSettings'; import { LoginIcon, SupportIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -5,9 +8,6 @@ import Link from 'next/link'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import * as Yup from 'yup'; -import useSettings from '../../hooks/useSettings'; -import Button from '../Common/Button'; -import SensitiveInput from '../Common/SensitiveInput'; const messages = defineMessages({ email: 'Email Address', diff --git a/src/components/Login/index.tsx b/src/components/Login/index.tsx index 519bb4ca..b30df78b 100644 --- a/src/components/Login/index.tsx +++ b/src/components/Login/index.tsx @@ -1,18 +1,18 @@ +import Accordion from '@app/components/Common/Accordion'; +import ImageFader from '@app/components/Common/ImageFader'; +import PageTitle from '@app/components/Common/PageTitle'; +import LanguagePicker from '@app/components/Layout/LanguagePicker'; +import LocalLogin from '@app/components/Login/LocalLogin'; +import PlexLoginButton from '@app/components/PlexLoginButton'; +import Transition from '@app/components/Transition'; +import useSettings from '@app/hooks/useSettings'; +import { useUser } from '@app/hooks/useUser'; import { XCircleIcon } from '@heroicons/react/solid'; import axios from 'axios'; import { useRouter } from 'next/dist/client/router'; import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import useSettings from '../../hooks/useSettings'; -import { useUser } from '../../hooks/useUser'; -import Accordion from '../Common/Accordion'; -import ImageFader from '../Common/ImageFader'; -import PageTitle from '../Common/PageTitle'; -import LanguagePicker from '../Layout/LanguagePicker'; -import PlexLoginButton from '../PlexLoginButton'; -import Transition from '../Transition'; -import LocalLogin from './LocalLogin'; const messages = defineMessages({ signin: 'Sign In', diff --git a/src/components/ManageSlideOver/index.tsx b/src/components/ManageSlideOver/index.tsx index 87f90967..a2df65b0 100644 --- a/src/components/ManageSlideOver/index.tsx +++ b/src/components/ManageSlideOver/index.tsx @@ -1,26 +1,23 @@ +import Button from '@app/components/Common/Button'; +import ConfirmButton from '@app/components/Common/ConfirmButton'; +import SlideOver from '@app/components/Common/SlideOver'; +import DownloadBlock from '@app/components/DownloadBlock'; +import IssueBlock from '@app/components/IssueBlock'; +import RequestBlock from '@app/components/RequestBlock'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { ServerIcon, ViewListIcon } from '@heroicons/react/outline'; import { CheckCircleIcon, DocumentRemoveIcon } from '@heroicons/react/solid'; +import { IssueStatus } from '@server/constants/issue'; +import { MediaRequestStatus, MediaStatus } from '@server/constants/media'; +import type { MediaWatchDataResponse } from '@server/interfaces/api/mediaInterfaces'; +import type { MovieDetails } from '@server/models/Movie'; +import type { TvDetails } from '@server/models/Tv'; import axios from 'axios'; import Link from 'next/link'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import { IssueStatus } from '../../../server/constants/issue'; -import { - MediaRequestStatus, - MediaStatus, -} from '../../../server/constants/media'; -import type { MediaWatchDataResponse } from '../../../server/interfaces/api/mediaInterfaces'; -import type { MovieDetails } from '../../../server/models/Movie'; -import type { TvDetails } from '../../../server/models/Tv'; -import useSettings from '../../hooks/useSettings'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Button from '../Common/Button'; -import ConfirmButton from '../Common/ConfirmButton'; -import SlideOver from '../Common/SlideOver'; -import DownloadBlock from '../DownloadBlock'; -import IssueBlock from '../IssueBlock'; -import RequestBlock from '../RequestBlock'; const messages = defineMessages({ manageModalTitle: 'Manage {mediaType}', diff --git a/src/components/MediaSlider/index.tsx b/src/components/MediaSlider/index.tsx index 54ed81dc..9a9bc054 100644 --- a/src/components/MediaSlider/index.tsx +++ b/src/components/MediaSlider/index.tsx @@ -1,18 +1,18 @@ +import ShowMoreCard from '@app/components/MediaSlider/ShowMoreCard'; +import PersonCard from '@app/components/PersonCard'; +import Slider from '@app/components/Slider'; +import TitleCard from '@app/components/TitleCard'; +import useSettings from '@app/hooks/useSettings'; import { ArrowCircleRightIcon } from '@heroicons/react/outline'; -import Link from 'next/link'; -import { useEffect } from 'react'; -import useSWRInfinite from 'swr/infinite'; -import { MediaStatus } from '../../../server/constants/media'; +import { MediaStatus } from '@server/constants/media'; import type { MovieResult, PersonResult, TvResult, -} from '../../../server/models/Search'; -import useSettings from '../../hooks/useSettings'; -import PersonCard from '../PersonCard'; -import Slider from '../Slider'; -import TitleCard from '../TitleCard'; -import ShowMoreCard from './ShowMoreCard'; +} from '@server/models/Search'; +import Link from 'next/link'; +import { useEffect } from 'react'; +import useSWRInfinite from 'swr/infinite'; interface MixedResult { page: number; diff --git a/src/components/MovieDetails/MovieCast/index.tsx b/src/components/MovieDetails/MovieCast/index.tsx index 539f7c61..2006e9df 100644 --- a/src/components/MovieDetails/MovieCast/index.tsx +++ b/src/components/MovieDetails/MovieCast/index.tsx @@ -1,13 +1,13 @@ +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import PersonCard from '@app/components/PersonCard'; +import Error from '@app/pages/_error'; +import type { MovieDetails } from '@server/models/Movie'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { MovieDetails } from '../../../../server/models/Movie'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import PersonCard from '../../PersonCard'; const messages = defineMessages({ fullcast: 'Full Cast', diff --git a/src/components/MovieDetails/MovieCrew/index.tsx b/src/components/MovieDetails/MovieCrew/index.tsx index 941bfb50..1cc43b05 100644 --- a/src/components/MovieDetails/MovieCrew/index.tsx +++ b/src/components/MovieDetails/MovieCrew/index.tsx @@ -1,13 +1,13 @@ +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import PersonCard from '@app/components/PersonCard'; +import Error from '@app/pages/_error'; +import type { MovieDetails } from '@server/models/Movie'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { MovieDetails } from '../../../../server/models/Movie'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import PersonCard from '../../PersonCard'; const messages = defineMessages({ fullcrew: 'Full Crew', diff --git a/src/components/MovieDetails/MovieRecommendations.tsx b/src/components/MovieDetails/MovieRecommendations.tsx index 70441232..a7635a25 100644 --- a/src/components/MovieDetails/MovieRecommendations.tsx +++ b/src/components/MovieDetails/MovieRecommendations.tsx @@ -1,14 +1,14 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { MovieDetails } from '@server/models/Movie'; +import type { MovieResult } from '@server/models/Search'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { MovieDetails } from '../../../server/models/Movie'; -import type { MovieResult } from '../../../server/models/Search'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; const messages = defineMessages({ recommendations: 'Recommendations', diff --git a/src/components/MovieDetails/MovieSimilar.tsx b/src/components/MovieDetails/MovieSimilar.tsx index d96ff4d4..5ce5ef1a 100644 --- a/src/components/MovieDetails/MovieSimilar.tsx +++ b/src/components/MovieDetails/MovieSimilar.tsx @@ -1,14 +1,14 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { MovieDetails } from '@server/models/Movie'; +import type { MovieResult } from '@server/models/Search'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { MovieDetails } from '../../../server/models/Movie'; -import type { MovieResult } from '../../../server/models/Search'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; const messages = defineMessages({ similar: 'Similar Titles', diff --git a/src/components/MovieDetails/index.tsx b/src/components/MovieDetails/index.tsx index 54b7a0c7..6c89f9d3 100644 --- a/src/components/MovieDetails/index.tsx +++ b/src/components/MovieDetails/index.tsx @@ -1,3 +1,29 @@ +import RTAudFresh from '@app/assets/rt_aud_fresh.svg'; +import RTAudRotten from '@app/assets/rt_aud_rotten.svg'; +import RTFresh from '@app/assets/rt_fresh.svg'; +import RTRotten from '@app/assets/rt_rotten.svg'; +import TmdbLogo from '@app/assets/tmdb_logo.svg'; +import Button from '@app/components/Common/Button'; +import CachedImage from '@app/components/Common/CachedImage'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import type { PlayButtonLink } from '@app/components/Common/PlayButton'; +import PlayButton from '@app/components/Common/PlayButton'; +import Tooltip from '@app/components/Common/Tooltip'; +import ExternalLinkBlock from '@app/components/ExternalLinkBlock'; +import IssueModal from '@app/components/IssueModal'; +import ManageSlideOver from '@app/components/ManageSlideOver'; +import MediaSlider from '@app/components/MediaSlider'; +import PersonCard from '@app/components/PersonCard'; +import RequestButton from '@app/components/RequestButton'; +import Slider from '@app/components/Slider'; +import StatusBadge from '@app/components/StatusBadge'; +import useLocale from '@app/hooks/useLocale'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import { sortCrewPriority } from '@app/utils/creditHelpers'; import { ArrowCircleRightIcon, CloudIcon, @@ -11,6 +37,10 @@ import { ChevronDoubleDownIcon, ChevronDoubleUpIcon, } from '@heroicons/react/solid'; +import type { RTRating } from '@server/api/rottentomatoes'; +import { IssueStatus } from '@server/constants/issue'; +import { MediaStatus } from '@server/constants/media'; +import type { MovieDetails as MovieDetailsType } from '@server/models/Movie'; import { hasFlag } from 'country-flag-icons'; import 'country-flag-icons/3x2/flags.css'; import { uniqBy } from 'lodash'; @@ -19,36 +49,6 @@ import { useRouter } from 'next/router'; import { useEffect, useMemo, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { RTRating } from '../../../server/api/rottentomatoes'; -import { IssueStatus } from '../../../server/constants/issue'; -import { MediaStatus } from '../../../server/constants/media'; -import type { MovieDetails as MovieDetailsType } from '../../../server/models/Movie'; -import RTAudFresh from '../../assets/rt_aud_fresh.svg'; -import RTAudRotten from '../../assets/rt_aud_rotten.svg'; -import RTFresh from '../../assets/rt_fresh.svg'; -import RTRotten from '../../assets/rt_rotten.svg'; -import TmdbLogo from '../../assets/tmdb_logo.svg'; -import useLocale from '../../hooks/useLocale'; -import useSettings from '../../hooks/useSettings'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Error from '../../pages/_error'; -import { sortCrewPriority } from '../../utils/creditHelpers'; -import Button from '../Common/Button'; -import CachedImage from '../Common/CachedImage'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import type { PlayButtonLink } from '../Common/PlayButton'; -import PlayButton from '../Common/PlayButton'; -import Tooltip from '../Common/Tooltip'; -import ExternalLinkBlock from '../ExternalLinkBlock'; -import IssueModal from '../IssueModal'; -import ManageSlideOver from '../ManageSlideOver'; -import MediaSlider from '../MediaSlider'; -import PersonCard from '../PersonCard'; -import RequestButton from '../RequestButton'; -import Slider from '../Slider'; -import StatusBadge from '../StatusBadge'; const messages = defineMessages({ originaltitle: 'Original Title', diff --git a/src/components/NotificationTypeSelector/NotificationType/index.tsx b/src/components/NotificationTypeSelector/NotificationType/index.tsx index 901b83b3..f0e6cb05 100644 --- a/src/components/NotificationTypeSelector/NotificationType/index.tsx +++ b/src/components/NotificationTypeSelector/NotificationType/index.tsx @@ -1,5 +1,5 @@ -import type { NotificationItem } from '..'; -import { hasNotificationType } from '..'; +import type { NotificationItem } from '@app/components/NotificationTypeSelector'; +import { hasNotificationType } from '@app/components/NotificationTypeSelector'; interface NotificationTypeProps { option: NotificationItem; diff --git a/src/components/NotificationTypeSelector/index.tsx b/src/components/NotificationTypeSelector/index.tsx index 492b68f4..149c2757 100644 --- a/src/components/NotificationTypeSelector/index.tsx +++ b/src/components/NotificationTypeSelector/index.tsx @@ -1,10 +1,10 @@ +import NotificationType from '@app/components/NotificationTypeSelector/NotificationType'; +import useSettings from '@app/hooks/useSettings'; +import type { User } from '@app/hooks/useUser'; +import { Permission, useUser } from '@app/hooks/useUser'; import { sortBy } from 'lodash'; import { useMemo, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import useSettings from '../../hooks/useSettings'; -import type { User } from '../../hooks/useUser'; -import { Permission, useUser } from '../../hooks/useUser'; -import NotificationType from './NotificationType'; const messages = defineMessages({ notificationTypes: 'Notification Types', diff --git a/src/components/PermissionEdit/index.tsx b/src/components/PermissionEdit/index.tsx index 4e77a13f..69fe6037 100644 --- a/src/components/PermissionEdit/index.tsx +++ b/src/components/PermissionEdit/index.tsx @@ -1,8 +1,8 @@ +import type { PermissionItem } from '@app/components/PermissionOption'; +import PermissionOption from '@app/components/PermissionOption'; +import type { User } from '@app/hooks/useUser'; +import { Permission } from '@app/hooks/useUser'; import { defineMessages, useIntl } from 'react-intl'; -import type { User } from '../../hooks/useUser'; -import { Permission } from '../../hooks/useUser'; -import type { PermissionItem } from '../PermissionOption'; -import PermissionOption from '../PermissionOption'; export const messages = defineMessages({ admin: 'Admin', diff --git a/src/components/PermissionOption/index.tsx b/src/components/PermissionOption/index.tsx index 50ccc918..43d5128d 100644 --- a/src/components/PermissionOption/index.tsx +++ b/src/components/PermissionOption/index.tsx @@ -1,7 +1,7 @@ -import { hasPermission } from '../../../server/lib/permissions'; -import useSettings from '../../hooks/useSettings'; -import type { User } from '../../hooks/useUser'; -import { Permission } from '../../hooks/useUser'; +import useSettings from '@app/hooks/useSettings'; +import type { User } from '@app/hooks/useUser'; +import { Permission } from '@app/hooks/useUser'; +import { hasPermission } from '@server/lib/permissions'; export interface PermissionItem { id: string; diff --git a/src/components/PersonCard/index.tsx b/src/components/PersonCard/index.tsx index 1a5446f6..c2b7b642 100644 --- a/src/components/PersonCard/index.tsx +++ b/src/components/PersonCard/index.tsx @@ -1,7 +1,7 @@ +import CachedImage from '@app/components/Common/CachedImage'; import { UserCircleIcon } from '@heroicons/react/solid'; import Link from 'next/link'; import { useState } from 'react'; -import CachedImage from '../Common/CachedImage'; interface PersonCardProps { personId: number; diff --git a/src/components/PersonDetails/index.tsx b/src/components/PersonDetails/index.tsx index dcfed322..9c8173ad 100644 --- a/src/components/PersonDetails/index.tsx +++ b/src/components/PersonDetails/index.tsx @@ -1,19 +1,19 @@ +import Ellipsis from '@app/assets/ellipsis.svg'; +import CachedImage from '@app/components/Common/CachedImage'; +import ImageFader from '@app/components/Common/ImageFader'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import TitleCard from '@app/components/TitleCard'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import type { PersonCombinedCreditsResponse } from '@server/interfaces/api/personInterfaces'; +import type { PersonDetails as PersonDetailsType } from '@server/models/Person'; import { groupBy } from 'lodash'; import { useRouter } from 'next/router'; import { useMemo, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import TruncateMarkup from 'react-truncate-markup'; import useSWR from 'swr'; -import type { PersonCombinedCreditsResponse } from '../../../server/interfaces/api/personInterfaces'; -import type { PersonDetails as PersonDetailsType } from '../../../server/models/Person'; -import Ellipsis from '../../assets/ellipsis.svg'; -import globalMessages from '../../i18n/globalMessages'; -import Error from '../../pages/_error'; -import CachedImage from '../Common/CachedImage'; -import ImageFader from '../Common/ImageFader'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import TitleCard from '../TitleCard'; const messages = defineMessages({ birthdate: 'Born {birthdate}', diff --git a/src/components/PlexLoginButton/index.tsx b/src/components/PlexLoginButton/index.tsx index 7963ab0c..c89f1021 100644 --- a/src/components/PlexLoginButton/index.tsx +++ b/src/components/PlexLoginButton/index.tsx @@ -1,8 +1,8 @@ +import globalMessages from '@app/i18n/globalMessages'; +import PlexOAuth from '@app/utils/plex'; import { LoginIcon } from '@heroicons/react/outline'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import globalMessages from '../../i18n/globalMessages'; -import PlexOAuth from '../../utils/plex'; const messages = defineMessages({ signinwithplex: 'Sign In', diff --git a/src/components/RegionSelector/index.tsx b/src/components/RegionSelector/index.tsx index 94751850..5a714c74 100644 --- a/src/components/RegionSelector/index.tsx +++ b/src/components/RegionSelector/index.tsx @@ -1,13 +1,13 @@ +import useSettings from '@app/hooks/useSettings'; import { Listbox, Transition } from '@headlessui/react'; import { CheckIcon, ChevronDownIcon } from '@heroicons/react/solid'; +import type { Region } from '@server/lib/settings'; import { hasFlag } from 'country-flag-icons'; import 'country-flag-icons/3x2/flags.css'; import { sortBy } from 'lodash'; import { useEffect, useMemo, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { Region } from '../../../server/lib/settings'; -import useSettings from '../../hooks/useSettings'; const messages = defineMessages({ regionDefault: 'All Regions', diff --git a/src/components/RequestBlock/index.tsx b/src/components/RequestBlock/index.tsx index ab58edc9..97889a08 100644 --- a/src/components/RequestBlock/index.tsx +++ b/src/components/RequestBlock/index.tsx @@ -1,3 +1,9 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import RequestModal from '@app/components/RequestModal'; +import useRequestOverride from '@app/hooks/useRequestOverride'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { CalendarIcon, CheckIcon, @@ -7,18 +13,12 @@ import { UserIcon, XIcon, } from '@heroicons/react/solid'; +import { MediaRequestStatus } from '@server/constants/media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; import axios from 'axios'; import Link from 'next/link'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import { MediaRequestStatus } from '../../../server/constants/media'; -import type { MediaRequest } from '../../../server/entity/MediaRequest'; -import useRequestOverride from '../../hooks/useRequestOverride'; -import { useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Badge from '../Common/Badge'; -import Button from '../Common/Button'; -import RequestModal from '../RequestModal'; const messages = defineMessages({ seasons: '{seasonCount, plural, one {Season} other {Seasons}}', diff --git a/src/components/RequestButton/index.tsx b/src/components/RequestButton/index.tsx index 72b95f07..14002e43 100644 --- a/src/components/RequestButton/index.tsx +++ b/src/components/RequestButton/index.tsx @@ -1,23 +1,20 @@ +import ButtonWithDropdown from '@app/components/Common/ButtonWithDropdown'; +import RequestModal from '@app/components/RequestModal'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { DownloadIcon } from '@heroicons/react/outline'; import { CheckIcon, InformationCircleIcon, XIcon, } from '@heroicons/react/solid'; +import { MediaRequestStatus, MediaStatus } from '@server/constants/media'; +import type Media from '@server/entity/Media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; import axios from 'axios'; import { useMemo, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import { - MediaRequestStatus, - MediaStatus, -} from '../../../server/constants/media'; -import type Media from '../../../server/entity/Media'; -import type { MediaRequest } from '../../../server/entity/MediaRequest'; -import useSettings from '../../hooks/useSettings'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import ButtonWithDropdown from '../Common/ButtonWithDropdown'; -import RequestModal from '../RequestModal'; const messages = defineMessages({ viewrequest: 'View Request', diff --git a/src/components/RequestCard/index.tsx b/src/components/RequestCard/index.tsx index b9916636..952f79ba 100644 --- a/src/components/RequestCard/index.tsx +++ b/src/components/RequestCard/index.tsx @@ -1,3 +1,11 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import CachedImage from '@app/components/Common/CachedImage'; +import RequestModal from '@app/components/RequestModal'; +import StatusBadge from '@app/components/StatusBadge'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import { withProperties } from '@app/utils/typeHelpers'; import { CheckIcon, PencilIcon, @@ -5,6 +13,10 @@ import { TrashIcon, XIcon, } from '@heroicons/react/solid'; +import { MediaRequestStatus } from '@server/constants/media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; +import type { MovieDetails } from '@server/models/Movie'; +import type { TvDetails } from '@server/models/Tv'; import axios from 'axios'; import Link from 'next/link'; import { useEffect, useState } from 'react'; @@ -12,18 +24,6 @@ import { useInView } from 'react-intersection-observer'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; -import { MediaRequestStatus } from '../../../server/constants/media'; -import type { MediaRequest } from '../../../server/entity/MediaRequest'; -import type { MovieDetails } from '../../../server/models/Movie'; -import type { TvDetails } from '../../../server/models/Tv'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import { withProperties } from '../../utils/typeHelpers'; -import Badge from '../Common/Badge'; -import Button from '../Common/Button'; -import CachedImage from '../Common/CachedImage'; -import RequestModal from '../RequestModal'; -import StatusBadge from '../StatusBadge'; const messages = defineMessages({ seasons: '{seasonCount, plural, one {Season} other {Seasons}}', diff --git a/src/components/RequestList/RequestItem/index.tsx b/src/components/RequestList/RequestItem/index.tsx index 5056314c..095d1aba 100644 --- a/src/components/RequestList/RequestItem/index.tsx +++ b/src/components/RequestList/RequestItem/index.tsx @@ -1,3 +1,11 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import CachedImage from '@app/components/Common/CachedImage'; +import ConfirmButton from '@app/components/Common/ConfirmButton'; +import RequestModal from '@app/components/RequestModal'; +import StatusBadge from '@app/components/StatusBadge'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { CheckIcon, PencilIcon, @@ -5,6 +13,10 @@ import { TrashIcon, XIcon, } from '@heroicons/react/solid'; +import { MediaRequestStatus } from '@server/constants/media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; +import type { MovieDetails } from '@server/models/Movie'; +import type { TvDetails } from '@server/models/Tv'; import axios from 'axios'; import Link from 'next/link'; import { useState } from 'react'; @@ -12,18 +24,6 @@ import { useInView } from 'react-intersection-observer'; import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; -import { MediaRequestStatus } from '../../../../server/constants/media'; -import type { MediaRequest } from '../../../../server/entity/MediaRequest'; -import type { MovieDetails } from '../../../../server/models/Movie'; -import type { TvDetails } from '../../../../server/models/Tv'; -import { Permission, useUser } from '../../../hooks/useUser'; -import globalMessages from '../../../i18n/globalMessages'; -import Badge from '../../Common/Badge'; -import Button from '../../Common/Button'; -import CachedImage from '../../Common/CachedImage'; -import ConfirmButton from '../../Common/ConfirmButton'; -import RequestModal from '../../RequestModal'; -import StatusBadge from '../../StatusBadge'; const messages = defineMessages({ seasons: '{seasonCount, plural, one {Season} other {Seasons}}', diff --git a/src/components/RequestList/index.tsx b/src/components/RequestList/index.tsx index 5ca4307d..42e952b7 100644 --- a/src/components/RequestList/index.tsx +++ b/src/components/RequestList/index.tsx @@ -1,23 +1,23 @@ +import Button from '@app/components/Common/Button'; +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import RequestItem from '@app/components/RequestList/RequestItem'; +import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { ChevronLeftIcon, ChevronRightIcon, FilterIcon, SortDescendingIcon, } from '@heroicons/react/solid'; +import type { RequestResultsResponse } from '@server/interfaces/api/requestInterfaces'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { RequestResultsResponse } from '../../../server/interfaces/api/requestInterfaces'; -import { useUpdateQueryParams } from '../../hooks/useUpdateQueryParams'; -import { useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Button from '../Common/Button'; -import Header from '../Common/Header'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import RequestItem from './RequestItem'; const messages = defineMessages({ requests: 'Requests', diff --git a/src/components/RequestModal/AdvancedRequester/index.tsx b/src/components/RequestModal/AdvancedRequester/index.tsx index d7ce96c3..432ac03a 100644 --- a/src/components/RequestModal/AdvancedRequester/index.tsx +++ b/src/components/RequestModal/AdvancedRequester/index.tsx @@ -1,22 +1,22 @@ /* eslint-disable react-hooks/exhaustive-deps */ +import { SmallLoadingSpinner } from '@app/components/Common/LoadingSpinner'; +import type { User } from '@app/hooks/useUser'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import { formatBytes } from '@app/utils/numberHelpers'; import { Listbox, Transition } from '@headlessui/react'; import { AdjustmentsIcon } from '@heroicons/react/outline'; import { CheckIcon, ChevronDownIcon } from '@heroicons/react/solid'; +import type { + ServiceCommonServer, + ServiceCommonServerWithDetails, +} from '@server/interfaces/api/serviceInterfaces'; +import type { UserResultsResponse } from '@server/interfaces/api/userInterfaces'; import { isEqual } from 'lodash'; import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import Select from 'react-select'; import useSWR from 'swr'; -import type { - ServiceCommonServer, - ServiceCommonServerWithDetails, -} from '../../../../server/interfaces/api/serviceInterfaces'; -import type { UserResultsResponse } from '../../../../server/interfaces/api/userInterfaces'; -import type { User } from '../../../hooks/useUser'; -import { Permission, useUser } from '../../../hooks/useUser'; -import globalMessages from '../../../i18n/globalMessages'; -import { formatBytes } from '../../../utils/numberHelpers'; -import { SmallLoadingSpinner } from '../../Common/LoadingSpinner'; type OptionType = { value: number; diff --git a/src/components/RequestModal/CollectionRequestModal.tsx b/src/components/RequestModal/CollectionRequestModal.tsx index e5bc7cb8..39f6a658 100644 --- a/src/components/RequestModal/CollectionRequestModal.tsx +++ b/src/components/RequestModal/CollectionRequestModal.tsx @@ -1,26 +1,23 @@ +import Alert from '@app/components/Common/Alert'; +import Badge from '@app/components/Common/Badge'; +import CachedImage from '@app/components/Common/CachedImage'; +import Modal from '@app/components/Common/Modal'; +import type { RequestOverrides } from '@app/components/RequestModal/AdvancedRequester'; +import AdvancedRequester from '@app/components/RequestModal/AdvancedRequester'; +import QuotaDisplay from '@app/components/RequestModal/QuotaDisplay'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { DownloadIcon } from '@heroicons/react/outline'; +import { MediaRequestStatus, MediaStatus } from '@server/constants/media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; +import type { QuotaResponse } from '@server/interfaces/api/userInterfaces'; +import { Permission } from '@server/lib/permissions'; +import type { Collection } from '@server/models/Collection'; import axios from 'axios'; import { useCallback, useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; -import { - MediaRequestStatus, - MediaStatus, -} from '../../../server/constants/media'; -import type { MediaRequest } from '../../../server/entity/MediaRequest'; -import type { QuotaResponse } from '../../../server/interfaces/api/userInterfaces'; -import { Permission } from '../../../server/lib/permissions'; -import type { Collection } from '../../../server/models/Collection'; -import { useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Alert from '../Common/Alert'; -import Badge from '../Common/Badge'; -import CachedImage from '../Common/CachedImage'; -import Modal from '../Common/Modal'; -import type { RequestOverrides } from './AdvancedRequester'; -import AdvancedRequester from './AdvancedRequester'; -import QuotaDisplay from './QuotaDisplay'; const messages = defineMessages({ requestadmin: 'This request will be approved automatically.', diff --git a/src/components/RequestModal/MovieRequestModal.tsx b/src/components/RequestModal/MovieRequestModal.tsx index 4e0ad1b0..4227e88d 100644 --- a/src/components/RequestModal/MovieRequestModal.tsx +++ b/src/components/RequestModal/MovieRequestModal.tsx @@ -1,21 +1,21 @@ +import Alert from '@app/components/Common/Alert'; +import Modal from '@app/components/Common/Modal'; +import type { RequestOverrides } from '@app/components/RequestModal/AdvancedRequester'; +import AdvancedRequester from '@app/components/RequestModal/AdvancedRequester'; +import QuotaDisplay from '@app/components/RequestModal/QuotaDisplay'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { DownloadIcon } from '@heroicons/react/outline'; +import { MediaStatus } from '@server/constants/media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; +import type { QuotaResponse } from '@server/interfaces/api/userInterfaces'; +import { Permission } from '@server/lib/permissions'; +import type { MovieDetails } from '@server/models/Movie'; import axios from 'axios'; import { useCallback, useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; -import { MediaStatus } from '../../../server/constants/media'; -import type { MediaRequest } from '../../../server/entity/MediaRequest'; -import type { QuotaResponse } from '../../../server/interfaces/api/userInterfaces'; -import { Permission } from '../../../server/lib/permissions'; -import type { MovieDetails } from '../../../server/models/Movie'; -import { useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Alert from '../Common/Alert'; -import Modal from '../Common/Modal'; -import type { RequestOverrides } from './AdvancedRequester'; -import AdvancedRequester from './AdvancedRequester'; -import QuotaDisplay from './QuotaDisplay'; const messages = defineMessages({ requestadmin: 'This request will be approved automatically.', diff --git a/src/components/RequestModal/QuotaDisplay/index.tsx b/src/components/RequestModal/QuotaDisplay/index.tsx index 9ee6af14..3588c360 100644 --- a/src/components/RequestModal/QuotaDisplay/index.tsx +++ b/src/components/RequestModal/QuotaDisplay/index.tsx @@ -1,9 +1,9 @@ +import ProgressCircle from '@app/components/Common/ProgressCircle'; import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/solid'; +import type { QuotaStatus } from '@server/interfaces/api/userInterfaces'; import Link from 'next/link'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import type { QuotaStatus } from '../../../../server/interfaces/api/userInterfaces'; -import ProgressCircle from '../../Common/ProgressCircle'; const messages = defineMessages({ requestsremaining: diff --git a/src/components/RequestModal/SearchByNameModal/index.tsx b/src/components/RequestModal/SearchByNameModal/index.tsx index 4bfb9631..0abf5db3 100644 --- a/src/components/RequestModal/SearchByNameModal/index.tsx +++ b/src/components/RequestModal/SearchByNameModal/index.tsx @@ -1,11 +1,11 @@ +import Alert from '@app/components/Common/Alert'; +import { SmallLoadingSpinner } from '@app/components/Common/LoadingSpinner'; +import Modal from '@app/components/Common/Modal'; +import globalMessages from '@app/i18n/globalMessages'; import { DownloadIcon } from '@heroicons/react/outline'; +import type { SonarrSeries } from '@server/api/servarr/sonarr'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { SonarrSeries } from '../../../../server/api/servarr/sonarr'; -import globalMessages from '../../../i18n/globalMessages'; -import Alert from '../../Common/Alert'; -import { SmallLoadingSpinner } from '../../Common/LoadingSpinner'; -import Modal from '../../Common/Modal'; const messages = defineMessages({ notvdbiddescription: diff --git a/src/components/RequestModal/TvRequestModal.tsx b/src/components/RequestModal/TvRequestModal.tsx index 8878af95..59e65dfc 100644 --- a/src/components/RequestModal/TvRequestModal.tsx +++ b/src/components/RequestModal/TvRequestModal.tsx @@ -1,29 +1,26 @@ +import Alert from '@app/components/Common/Alert'; +import Badge from '@app/components/Common/Badge'; +import Modal from '@app/components/Common/Modal'; +import type { RequestOverrides } from '@app/components/RequestModal/AdvancedRequester'; +import AdvancedRequester from '@app/components/RequestModal/AdvancedRequester'; +import QuotaDisplay from '@app/components/RequestModal/QuotaDisplay'; +import SearchByNameModal from '@app/components/RequestModal/SearchByNameModal'; +import useSettings from '@app/hooks/useSettings'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { DownloadIcon } from '@heroicons/react/outline'; +import { ANIME_KEYWORD_ID } from '@server/api/themoviedb/constants'; +import { MediaRequestStatus, MediaStatus } from '@server/constants/media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; +import type SeasonRequest from '@server/entity/SeasonRequest'; +import type { QuotaResponse } from '@server/interfaces/api/userInterfaces'; +import { Permission } from '@server/lib/permissions'; +import type { TvDetails } from '@server/models/Tv'; import axios from 'axios'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; -import { ANIME_KEYWORD_ID } from '../../../server/api/themoviedb/constants'; -import { - MediaRequestStatus, - MediaStatus, -} from '../../../server/constants/media'; -import type { MediaRequest } from '../../../server/entity/MediaRequest'; -import type SeasonRequest from '../../../server/entity/SeasonRequest'; -import type { QuotaResponse } from '../../../server/interfaces/api/userInterfaces'; -import { Permission } from '../../../server/lib/permissions'; -import type { TvDetails } from '../../../server/models/Tv'; -import useSettings from '../../hooks/useSettings'; -import { useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Alert from '../Common/Alert'; -import Badge from '../Common/Badge'; -import Modal from '../Common/Modal'; -import type { RequestOverrides } from './AdvancedRequester'; -import AdvancedRequester from './AdvancedRequester'; -import QuotaDisplay from './QuotaDisplay'; -import SearchByNameModal from './SearchByNameModal'; const messages = defineMessages({ requestadmin: 'This request will be approved automatically.', diff --git a/src/components/RequestModal/index.tsx b/src/components/RequestModal/index.tsx index fd349b36..bd47317b 100644 --- a/src/components/RequestModal/index.tsx +++ b/src/components/RequestModal/index.tsx @@ -1,9 +1,9 @@ -import type { MediaStatus } from '../../../server/constants/media'; -import type { MediaRequest } from '../../../server/entity/MediaRequest'; -import Transition from '../Transition'; -import CollectionRequestModal from './CollectionRequestModal'; -import MovieRequestModal from './MovieRequestModal'; -import TvRequestModal from './TvRequestModal'; +import CollectionRequestModal from '@app/components/RequestModal/CollectionRequestModal'; +import MovieRequestModal from '@app/components/RequestModal/MovieRequestModal'; +import TvRequestModal from '@app/components/RequestModal/TvRequestModal'; +import Transition from '@app/components/Transition'; +import type { MediaStatus } from '@server/constants/media'; +import type { MediaRequest } from '@server/entity/MediaRequest'; interface RequestModalProps { show: boolean; diff --git a/src/components/ResetPassword/RequestResetLink.tsx b/src/components/ResetPassword/RequestResetLink.tsx index 4e0cbdf6..28d854f1 100644 --- a/src/components/ResetPassword/RequestResetLink.tsx +++ b/src/components/ResetPassword/RequestResetLink.tsx @@ -1,3 +1,7 @@ +import Button from '@app/components/Common/Button'; +import ImageFader from '@app/components/Common/ImageFader'; +import PageTitle from '@app/components/Common/PageTitle'; +import LanguagePicker from '@app/components/Layout/LanguagePicker'; import { ArrowLeftIcon, MailIcon } from '@heroicons/react/solid'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -5,10 +9,6 @@ import Link from 'next/link'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import * as Yup from 'yup'; -import Button from '../Common/Button'; -import ImageFader from '../Common/ImageFader'; -import PageTitle from '../Common/PageTitle'; -import LanguagePicker from '../Layout/LanguagePicker'; const messages = defineMessages({ passwordreset: 'Password Reset', diff --git a/src/components/ResetPassword/index.tsx b/src/components/ResetPassword/index.tsx index 4da87ac0..dd644642 100644 --- a/src/components/ResetPassword/index.tsx +++ b/src/components/ResetPassword/index.tsx @@ -1,3 +1,8 @@ +import Button from '@app/components/Common/Button'; +import ImageFader from '@app/components/Common/ImageFader'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import LanguagePicker from '@app/components/Layout/LanguagePicker'; +import globalMessages from '@app/i18n/globalMessages'; import { SupportIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Form, Formik } from 'formik'; @@ -6,11 +11,6 @@ import { useRouter } from 'next/router'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import * as Yup from 'yup'; -import globalMessages from '../../i18n/globalMessages'; -import Button from '../Common/Button'; -import ImageFader from '../Common/ImageFader'; -import SensitiveInput from '../Common/SensitiveInput'; -import LanguagePicker from '../Layout/LanguagePicker'; const messages = defineMessages({ passwordreset: 'Password Reset', diff --git a/src/components/Search/index.tsx b/src/components/Search/index.tsx index 3fba18a4..22f143f2 100644 --- a/src/components/Search/index.tsx +++ b/src/components/Search/index.tsx @@ -1,15 +1,15 @@ -import { useRouter } from 'next/router'; -import { defineMessages, useIntl } from 'react-intl'; +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; import type { MovieResult, PersonResult, TvResult, -} from '../../../server/models/Search'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; +} from '@server/models/Search'; +import { useRouter } from 'next/router'; +import { defineMessages, useIntl } from 'react-intl'; const messages = defineMessages({ search: 'Search', diff --git a/src/components/ServiceWorkerSetup/index.tsx b/src/components/ServiceWorkerSetup/index.tsx index 0cf7383d..f30a26d1 100644 --- a/src/components/ServiceWorkerSetup/index.tsx +++ b/src/components/ServiceWorkerSetup/index.tsx @@ -1,8 +1,8 @@ /* eslint-disable no-console */ +import useSettings from '@app/hooks/useSettings'; +import { useUser } from '@app/hooks/useUser'; import axios from 'axios'; import { useEffect } from 'react'; -import useSettings from '../../hooks/useSettings'; -import { useUser } from '../../hooks/useUser'; const ServiceWorkerSetup = () => { const { currentSettings } = useSettings(); diff --git a/src/components/Settings/Notifications/NotificationsDiscord.tsx b/src/components/Settings/Notifications/NotificationsDiscord.tsx index 20db80cc..927bca6b 100644 --- a/src/components/Settings/Notifications/NotificationsDiscord.tsx +++ b/src/components/Settings/Notifications/NotificationsDiscord.tsx @@ -1,3 +1,8 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import useSettings from '@app/hooks/useSettings'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -6,11 +11,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import useSettings from '../../../hooks/useSettings'; -import globalMessages from '../../../i18n/globalMessages'; -import Button from '../../Common/Button'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../NotificationTypeSelector'; const messages = defineMessages({ agentenabled: 'Enable Agent', diff --git a/src/components/Settings/Notifications/NotificationsEmail.tsx b/src/components/Settings/Notifications/NotificationsEmail.tsx index 244b5b82..9222c996 100644 --- a/src/components/Settings/Notifications/NotificationsEmail.tsx +++ b/src/components/Settings/Notifications/NotificationsEmail.tsx @@ -1,3 +1,8 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -6,11 +11,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; import * as Yup from 'yup'; -import globalMessages from '../../../i18n/globalMessages'; -import Badge from '../../Common/Badge'; -import Button from '../../Common/Button'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import SensitiveInput from '../../Common/SensitiveInput'; const messages = defineMessages({ validationSmtpHostRequired: 'You must provide a valid hostname or IP address', diff --git a/src/components/Settings/Notifications/NotificationsGotify/index.tsx b/src/components/Settings/Notifications/NotificationsGotify/index.tsx index 10bd0807..77fb21b8 100644 --- a/src/components/Settings/Notifications/NotificationsGotify/index.tsx +++ b/src/components/Settings/Notifications/NotificationsGotify/index.tsx @@ -1,3 +1,7 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/solid'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -6,10 +10,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ agentenabled: 'Enable Agent', diff --git a/src/components/Settings/Notifications/NotificationsLunaSea/index.tsx b/src/components/Settings/Notifications/NotificationsLunaSea/index.tsx index 22fff42d..11636325 100644 --- a/src/components/Settings/Notifications/NotificationsLunaSea/index.tsx +++ b/src/components/Settings/Notifications/NotificationsLunaSea/index.tsx @@ -1,3 +1,7 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -6,10 +10,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ agentenabled: 'Enable Agent', diff --git a/src/components/Settings/Notifications/NotificationsPushbullet/index.tsx b/src/components/Settings/Notifications/NotificationsPushbullet/index.tsx index 78012e66..bf6a5956 100644 --- a/src/components/Settings/Notifications/NotificationsPushbullet/index.tsx +++ b/src/components/Settings/Notifications/NotificationsPushbullet/index.tsx @@ -1,3 +1,8 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -6,11 +11,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import SensitiveInput from '../../../Common/SensitiveInput'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ agentEnabled: 'Enable Agent', diff --git a/src/components/Settings/Notifications/NotificationsPushover/index.tsx b/src/components/Settings/Notifications/NotificationsPushover/index.tsx index d1e164e3..d2e90ac9 100644 --- a/src/components/Settings/Notifications/NotificationsPushover/index.tsx +++ b/src/components/Settings/Notifications/NotificationsPushover/index.tsx @@ -1,3 +1,7 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -6,10 +10,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ agentenabled: 'Enable Agent', diff --git a/src/components/Settings/Notifications/NotificationsSlack/index.tsx b/src/components/Settings/Notifications/NotificationsSlack/index.tsx index e6437f32..09c63443 100644 --- a/src/components/Settings/Notifications/NotificationsSlack/index.tsx +++ b/src/components/Settings/Notifications/NotificationsSlack/index.tsx @@ -1,3 +1,7 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -6,10 +10,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ agentenabled: 'Enable Agent', diff --git a/src/components/Settings/Notifications/NotificationsTelegram.tsx b/src/components/Settings/Notifications/NotificationsTelegram.tsx index 319cd177..1959604e 100644 --- a/src/components/Settings/Notifications/NotificationsTelegram.tsx +++ b/src/components/Settings/Notifications/NotificationsTelegram.tsx @@ -1,3 +1,8 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -6,11 +11,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import globalMessages from '../../../i18n/globalMessages'; -import Button from '../../Common/Button'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import SensitiveInput from '../../Common/SensitiveInput'; -import NotificationTypeSelector from '../../NotificationTypeSelector'; const messages = defineMessages({ agentenabled: 'Enable Agent', diff --git a/src/components/Settings/Notifications/NotificationsWebPush/index.tsx b/src/components/Settings/Notifications/NotificationsWebPush/index.tsx index 9fb1060f..0f56c0c9 100644 --- a/src/components/Settings/Notifications/NotificationsWebPush/index.tsx +++ b/src/components/Settings/Notifications/NotificationsWebPush/index.tsx @@ -1,3 +1,7 @@ +import Alert from '@app/components/Common/Alert'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; @@ -5,10 +9,6 @@ import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; -import globalMessages from '../../../../i18n/globalMessages'; -import Alert from '../../../Common/Alert'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; const messages = defineMessages({ agentenabled: 'Enable Agent', diff --git a/src/components/Settings/Notifications/NotificationsWebhook/index.tsx b/src/components/Settings/Notifications/NotificationsWebhook/index.tsx index 4383dd62..eae77a27 100644 --- a/src/components/Settings/Notifications/NotificationsWebhook/index.tsx +++ b/src/components/Settings/Notifications/NotificationsWebhook/index.tsx @@ -1,3 +1,7 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import globalMessages from '@app/i18n/globalMessages'; import { BeakerIcon, SaveIcon } from '@heroicons/react/outline'; import { QuestionMarkCircleIcon, RefreshIcon } from '@heroicons/react/solid'; import axios from 'axios'; @@ -9,10 +13,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const JSONEditor = dynamic(() => import('../../../JSONEditor'), { ssr: false }); diff --git a/src/components/Settings/RadarrModal/index.tsx b/src/components/Settings/RadarrModal/index.tsx index 1cfaf4cf..92bf2261 100644 --- a/src/components/Settings/RadarrModal/index.tsx +++ b/src/components/Settings/RadarrModal/index.tsx @@ -1,4 +1,9 @@ +import Modal from '@app/components/Common/Modal'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import Transition from '@app/components/Transition'; +import globalMessages from '@app/i18n/globalMessages'; import { PencilIcon, PlusIcon } from '@heroicons/react/solid'; +import type { RadarrSettings } from '@server/lib/settings'; import axios from 'axios'; import { Field, Formik } from 'formik'; import { useCallback, useEffect, useRef, useState } from 'react'; @@ -6,11 +11,6 @@ import { defineMessages, useIntl } from 'react-intl'; import Select from 'react-select'; import { useToasts } from 'react-toast-notifications'; import * as Yup from 'yup'; -import type { RadarrSettings } from '../../../../server/lib/settings'; -import globalMessages from '../../../i18n/globalMessages'; -import Modal from '../../Common/Modal'; -import SensitiveInput from '../../Common/SensitiveInput'; -import Transition from '../../Transition'; type OptionType = { value: number; diff --git a/src/components/Settings/SettingsAbout/Releases/index.tsx b/src/components/Settings/SettingsAbout/Releases/index.tsx index 08b35399..a33f0e5a 100644 --- a/src/components/Settings/SettingsAbout/Releases/index.tsx +++ b/src/components/Settings/SettingsAbout/Releases/index.tsx @@ -1,14 +1,14 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import Modal from '@app/components/Common/Modal'; +import Transition from '@app/components/Transition'; +import globalMessages from '@app/i18n/globalMessages'; import { DocumentTextIcon } from '@heroicons/react/outline'; import { useState } from 'react'; import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl'; import ReactMarkdown from 'react-markdown'; import useSWR from 'swr'; -import globalMessages from '../../../../i18n/globalMessages'; -import Badge from '../../../Common/Badge'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import Modal from '../../../Common/Modal'; -import Transition from '../../../Transition'; const messages = defineMessages({ releases: 'Releases', diff --git a/src/components/Settings/SettingsAbout/index.tsx b/src/components/Settings/SettingsAbout/index.tsx index 00aaa5ae..6d095a49 100644 --- a/src/components/Settings/SettingsAbout/index.tsx +++ b/src/components/Settings/SettingsAbout/index.tsx @@ -1,18 +1,18 @@ +import Alert from '@app/components/Common/Alert'; +import Badge from '@app/components/Common/Badge'; +import List from '@app/components/Common/List'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import Releases from '@app/components/Settings/SettingsAbout/Releases'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; import { InformationCircleIcon } from '@heroicons/react/solid'; -import { defineMessages, useIntl } from 'react-intl'; -import useSWR from 'swr'; import type { SettingsAboutResponse, StatusResponse, -} from '../../../../server/interfaces/api/settingsInterfaces'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Alert from '../../Common/Alert'; -import Badge from '../../Common/Badge'; -import List from '../../Common/List'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import Releases from './Releases'; +} from '@server/interfaces/api/settingsInterfaces'; +import { defineMessages, useIntl } from 'react-intl'; +import useSWR from 'swr'; const messages = defineMessages({ about: 'About', diff --git a/src/components/Settings/SettingsJobsCache/index.tsx b/src/components/Settings/SettingsJobsCache/index.tsx index 1ac6dc22..4d2ccf8c 100644 --- a/src/components/Settings/SettingsJobsCache/index.tsx +++ b/src/components/Settings/SettingsJobsCache/index.tsx @@ -1,23 +1,23 @@ +import Spinner from '@app/assets/spinner.svg'; +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import Modal from '@app/components/Common/Modal'; +import PageTitle from '@app/components/Common/PageTitle'; +import Table from '@app/components/Common/Table'; +import Transition from '@app/components/Transition'; +import globalMessages from '@app/i18n/globalMessages'; +import { formatBytes } from '@app/utils/numberHelpers'; import { PlayIcon, StopIcon, TrashIcon } from '@heroicons/react/outline'; import { PencilIcon } from '@heroicons/react/solid'; +import type { CacheItem } from '@server/interfaces/api/settingsInterfaces'; +import type { JobId } from '@server/lib/settings'; import axios from 'axios'; import { useState } from 'react'; import type { MessageDescriptor } from 'react-intl'; import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; -import type { CacheItem } from '../../../../server/interfaces/api/settingsInterfaces'; -import type { JobId } from '../../../../server/lib/settings'; -import Spinner from '../../../assets/spinner.svg'; -import globalMessages from '../../../i18n/globalMessages'; -import { formatBytes } from '../../../utils/numberHelpers'; -import Badge from '../../Common/Badge'; -import Button from '../../Common/Button'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import Modal from '../../Common/Modal'; -import PageTitle from '../../Common/PageTitle'; -import Table from '../../Common/Table'; -import Transition from '../../Transition'; const messages: { [messageName: string]: MessageDescriptor } = defineMessages({ jobsandcache: 'Jobs & Cache', diff --git a/src/components/Settings/SettingsLayout.tsx b/src/components/Settings/SettingsLayout.tsx index 6b89ab47..8d712fd1 100644 --- a/src/components/Settings/SettingsLayout.tsx +++ b/src/components/Settings/SettingsLayout.tsx @@ -1,8 +1,8 @@ +import PageTitle from '@app/components/Common/PageTitle'; +import type { SettingsRoute } from '@app/components/Common/SettingsTabs'; +import SettingsTabs from '@app/components/Common/SettingsTabs'; +import globalMessages from '@app/i18n/globalMessages'; import { defineMessages, useIntl } from 'react-intl'; -import globalMessages from '../../i18n/globalMessages'; -import PageTitle from '../Common/PageTitle'; -import type { SettingsRoute } from '../Common/SettingsTabs'; -import SettingsTabs from '../Common/SettingsTabs'; const messages = defineMessages({ menuGeneralSettings: 'General', diff --git a/src/components/Settings/SettingsLogs/index.tsx b/src/components/Settings/SettingsLogs/index.tsx index f70beb6e..1959fa25 100644 --- a/src/components/Settings/SettingsLogs/index.tsx +++ b/src/components/Settings/SettingsLogs/index.tsx @@ -1,3 +1,13 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import Modal from '@app/components/Common/Modal'; +import PageTitle from '@app/components/Common/PageTitle'; +import Table from '@app/components/Common/Table'; +import Transition from '@app/components/Transition'; +import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; import { ChevronLeftIcon, ChevronRightIcon, @@ -7,26 +17,16 @@ import { PauseIcon, PlayIcon, } from '@heroicons/react/solid'; +import type { + LogMessage, + LogsResultsResponse, +} from '@server/interfaces/api/settingsInterfaces'; import copy from 'copy-to-clipboard'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; -import type { - LogMessage, - LogsResultsResponse, -} from '../../../../server/interfaces/api/settingsInterfaces'; -import { useUpdateQueryParams } from '../../../hooks/useUpdateQueryParams'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Badge from '../../Common/Badge'; -import Button from '../../Common/Button'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import Modal from '../../Common/Modal'; -import PageTitle from '../../Common/PageTitle'; -import Table from '../../Common/Table'; -import Transition from '../../Transition'; const messages = defineMessages({ logs: 'Logs', diff --git a/src/components/Settings/SettingsMain.tsx b/src/components/Settings/SettingsMain.tsx index 57b69931..96c7765a 100644 --- a/src/components/Settings/SettingsMain.tsx +++ b/src/components/Settings/SettingsMain.tsx @@ -1,26 +1,26 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import LanguageSelector from '@app/components/LanguageSelector'; +import RegionSelector from '@app/components/RegionSelector'; +import CopyButton from '@app/components/Settings/CopyButton'; +import type { AvailableLocale } from '@app/context/LanguageContext'; +import { availableLanguages } from '@app/context/LanguageContext'; +import useLocale from '@app/hooks/useLocale'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { SaveIcon } from '@heroicons/react/outline'; import { RefreshIcon } from '@heroicons/react/solid'; +import type { UserSettingsGeneralResponse } from '@server/interfaces/api/userSettingsInterfaces'; +import type { MainSettings } from '@server/lib/settings'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; import * as Yup from 'yup'; -import type { UserSettingsGeneralResponse } from '../../../server/interfaces/api/userSettingsInterfaces'; -import type { MainSettings } from '../../../server/lib/settings'; -import type { AvailableLocale } from '../../context/LanguageContext'; -import { availableLanguages } from '../../context/LanguageContext'; -import useLocale from '../../hooks/useLocale'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Badge from '../Common/Badge'; -import Button from '../Common/Button'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import SensitiveInput from '../Common/SensitiveInput'; -import LanguageSelector from '../LanguageSelector'; -import RegionSelector from '../RegionSelector'; -import CopyButton from './CopyButton'; const messages = defineMessages({ general: 'General', diff --git a/src/components/Settings/SettingsNotifications.tsx b/src/components/Settings/SettingsNotifications.tsx index 43d47c6d..ca28c80b 100644 --- a/src/components/Settings/SettingsNotifications.tsx +++ b/src/components/Settings/SettingsNotifications.tsx @@ -1,16 +1,16 @@ +import DiscordLogo from '@app/assets/extlogos/discord.svg'; +import GotifyLogo from '@app/assets/extlogos/gotify.svg'; +import LunaSeaLogo from '@app/assets/extlogos/lunasea.svg'; +import PushbulletLogo from '@app/assets/extlogos/pushbullet.svg'; +import PushoverLogo from '@app/assets/extlogos/pushover.svg'; +import SlackLogo from '@app/assets/extlogos/slack.svg'; +import TelegramLogo from '@app/assets/extlogos/telegram.svg'; +import PageTitle from '@app/components/Common/PageTitle'; +import type { SettingsRoute } from '@app/components/Common/SettingsTabs'; +import SettingsTabs from '@app/components/Common/SettingsTabs'; +import globalMessages from '@app/i18n/globalMessages'; import { CloudIcon, LightningBoltIcon, MailIcon } from '@heroicons/react/solid'; import { defineMessages, useIntl } from 'react-intl'; -import DiscordLogo from '../../assets/extlogos/discord.svg'; -import GotifyLogo from '../../assets/extlogos/gotify.svg'; -import LunaSeaLogo from '../../assets/extlogos/lunasea.svg'; -import PushbulletLogo from '../../assets/extlogos/pushbullet.svg'; -import PushoverLogo from '../../assets/extlogos/pushover.svg'; -import SlackLogo from '../../assets/extlogos/slack.svg'; -import TelegramLogo from '../../assets/extlogos/telegram.svg'; -import globalMessages from '../../i18n/globalMessages'; -import PageTitle from '../Common/PageTitle'; -import type { SettingsRoute } from '../Common/SettingsTabs'; -import SettingsTabs from '../Common/SettingsTabs'; const messages = defineMessages({ notifications: 'Notifications', diff --git a/src/components/Settings/SettingsPlex.tsx b/src/components/Settings/SettingsPlex.tsx index 319997a2..1507e91e 100644 --- a/src/components/Settings/SettingsPlex.tsx +++ b/src/components/Settings/SettingsPlex.tsx @@ -1,5 +1,15 @@ +import Alert from '@app/components/Common/Alert'; +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import LibraryItem from '@app/components/Settings/LibraryItem'; +import globalMessages from '@app/i18n/globalMessages'; import { SaveIcon } from '@heroicons/react/outline'; import { RefreshIcon, SearchIcon, XIcon } from '@heroicons/react/solid'; +import type { PlexDevice } from '@server/interfaces/api/plexInterfaces'; +import type { PlexSettings, TautulliSettings } from '@server/lib/settings'; import axios from 'axios'; import { Field, Formik } from 'formik'; import { orderBy } from 'lodash'; @@ -8,19 +18,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import type { PlexDevice } from '../../../server/interfaces/api/plexInterfaces'; -import type { - PlexSettings, - TautulliSettings, -} from '../../../server/lib/settings'; -import globalMessages from '../../i18n/globalMessages'; -import Alert from '../Common/Alert'; -import Badge from '../Common/Badge'; -import Button from '../Common/Button'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import SensitiveInput from '../Common/SensitiveInput'; -import LibraryItem from './LibraryItem'; const messages = defineMessages({ plex: 'Plex', diff --git a/src/components/Settings/SettingsServices.tsx b/src/components/Settings/SettingsServices.tsx index c618f7ba..10e72e30 100644 --- a/src/components/Settings/SettingsServices.tsx +++ b/src/components/Settings/SettingsServices.tsx @@ -1,24 +1,21 @@ +import RadarrLogo from '@app/assets/services/radarr.svg'; +import SonarrLogo from '@app/assets/services/sonarr.svg'; +import Alert from '@app/components/Common/Alert'; +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import Modal from '@app/components/Common/Modal'; +import PageTitle from '@app/components/Common/PageTitle'; +import RadarrModal from '@app/components/Settings/RadarrModal'; +import SonarrModal from '@app/components/Settings/SonarrModal'; +import Transition from '@app/components/Transition'; +import globalMessages from '@app/i18n/globalMessages'; import { PencilIcon, PlusIcon, TrashIcon } from '@heroicons/react/solid'; +import type { RadarrSettings, SonarrSettings } from '@server/lib/settings'; import axios from 'axios'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR, { mutate } from 'swr'; -import type { - RadarrSettings, - SonarrSettings, -} from '../../../server/lib/settings'; -import RadarrLogo from '../../assets/services/radarr.svg'; -import SonarrLogo from '../../assets/services/sonarr.svg'; -import globalMessages from '../../i18n/globalMessages'; -import Alert from '../Common/Alert'; -import Badge from '../Common/Badge'; -import Button from '../Common/Button'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import Modal from '../Common/Modal'; -import PageTitle from '../Common/PageTitle'; -import Transition from '../Transition'; -import RadarrModal from './RadarrModal'; -import SonarrModal from './SonarrModal'; const messages = defineMessages({ services: 'Services', diff --git a/src/components/Settings/SettingsUsers/index.tsx b/src/components/Settings/SettingsUsers/index.tsx index e78a97f6..fb01ba48 100644 --- a/src/components/Settings/SettingsUsers/index.tsx +++ b/src/components/Settings/SettingsUsers/index.tsx @@ -1,16 +1,16 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import PermissionEdit from '@app/components/PermissionEdit'; +import QuotaSelector from '@app/components/QuotaSelector'; +import globalMessages from '@app/i18n/globalMessages'; import { SaveIcon } from '@heroicons/react/outline'; +import type { MainSettings } from '@server/lib/settings'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; -import type { MainSettings } from '../../../../server/lib/settings'; -import globalMessages from '../../../i18n/globalMessages'; -import Button from '../../Common/Button'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import PermissionEdit from '../../PermissionEdit'; -import QuotaSelector from '../../QuotaSelector'; const messages = defineMessages({ users: 'Users', diff --git a/src/components/Settings/SonarrModal/index.tsx b/src/components/Settings/SonarrModal/index.tsx index 719ca4ea..da61d896 100644 --- a/src/components/Settings/SonarrModal/index.tsx +++ b/src/components/Settings/SonarrModal/index.tsx @@ -1,4 +1,9 @@ +import Modal from '@app/components/Common/Modal'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import Transition from '@app/components/Transition'; +import globalMessages from '@app/i18n/globalMessages'; import { PencilIcon, PlusIcon } from '@heroicons/react/solid'; +import type { SonarrSettings } from '@server/lib/settings'; import axios from 'axios'; import { Field, Formik } from 'formik'; import { useCallback, useEffect, useRef, useState } from 'react'; @@ -7,11 +12,6 @@ import type { OnChangeValue } from 'react-select'; import Select from 'react-select'; import { useToasts } from 'react-toast-notifications'; import * as Yup from 'yup'; -import type { SonarrSettings } from '../../../../server/lib/settings'; -import globalMessages from '../../../i18n/globalMessages'; -import Modal from '../../Common/Modal'; -import SensitiveInput from '../../Common/SensitiveInput'; -import Transition from '../../Transition'; type OptionType = { value: number; diff --git a/src/components/Setup/LoginWithPlex.tsx b/src/components/Setup/LoginWithPlex.tsx index fbb1ff44..62778aed 100644 --- a/src/components/Setup/LoginWithPlex.tsx +++ b/src/components/Setup/LoginWithPlex.tsx @@ -1,8 +1,8 @@ +import PlexLoginButton from '@app/components/PlexLoginButton'; +import { useUser } from '@app/hooks/useUser'; import axios from 'axios'; import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import { useUser } from '../../hooks/useUser'; -import PlexLoginButton from '../PlexLoginButton'; const messages = defineMessages({ welcome: 'Welcome to Overseerr', diff --git a/src/components/Setup/index.tsx b/src/components/Setup/index.tsx index 29f7fd8b..1ec8b1b3 100644 --- a/src/components/Setup/index.tsx +++ b/src/components/Setup/index.tsx @@ -1,19 +1,19 @@ +import AppDataWarning from '@app/components/AppDataWarning'; +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import ImageFader from '@app/components/Common/ImageFader'; +import PageTitle from '@app/components/Common/PageTitle'; +import LanguagePicker from '@app/components/Layout/LanguagePicker'; +import SettingsPlex from '@app/components/Settings/SettingsPlex'; +import SettingsServices from '@app/components/Settings/SettingsServices'; +import LoginWithPlex from '@app/components/Setup/LoginWithPlex'; +import SetupSteps from '@app/components/Setup/SetupSteps'; +import useLocale from '@app/hooks/useLocale'; import axios from 'axios'; import { useRouter } from 'next/router'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR, { mutate } from 'swr'; -import useLocale from '../../hooks/useLocale'; -import AppDataWarning from '../AppDataWarning'; -import Badge from '../Common/Badge'; -import Button from '../Common/Button'; -import ImageFader from '../Common/ImageFader'; -import PageTitle from '../Common/PageTitle'; -import LanguagePicker from '../Layout/LanguagePicker'; -import SettingsPlex from '../Settings/SettingsPlex'; -import SettingsServices from '../Settings/SettingsServices'; -import LoginWithPlex from './LoginWithPlex'; -import SetupSteps from './SetupSteps'; const messages = defineMessages({ setup: 'Setup', diff --git a/src/components/Slider/index.tsx b/src/components/Slider/index.tsx index 0458550e..d8e4a175 100644 --- a/src/components/Slider/index.tsx +++ b/src/components/Slider/index.tsx @@ -1,10 +1,10 @@ +import TitleCard from '@app/components/TitleCard'; +import globalMessages from '@app/i18n/globalMessages'; import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/outline'; import { debounce } from 'lodash'; import { useCallback, useEffect, useRef, useState } from 'react'; import { useIntl } from 'react-intl'; import { useSpring } from 'react-spring'; -import globalMessages from '../../i18n/globalMessages'; -import TitleCard from '../TitleCard'; interface SliderProps { sliderKey: string; diff --git a/src/components/StatusBadge/index.tsx b/src/components/StatusBadge/index.tsx index ad1ab034..5929263f 100644 --- a/src/components/StatusBadge/index.tsx +++ b/src/components/StatusBadge/index.tsx @@ -1,10 +1,10 @@ +import Spinner from '@app/assets/spinner.svg'; +import Badge from '@app/components/Common/Badge'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import { MediaStatus } from '@server/constants/media'; import { defineMessages, useIntl } from 'react-intl'; -import { MediaStatus } from '../../../server/constants/media'; -import Spinner from '../../assets/spinner.svg'; -import useSettings from '../../hooks/useSettings'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Badge from '../Common/Badge'; const messages = defineMessages({ status: '{status}', diff --git a/src/components/StatusChecker/index.tsx b/src/components/StatusChecker/index.tsx index e0c6299f..e64619e3 100644 --- a/src/components/StatusChecker/index.tsx +++ b/src/components/StatusChecker/index.tsx @@ -1,13 +1,13 @@ +import Modal from '@app/components/Common/Modal'; +import Transition from '@app/components/Transition'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { RefreshIcon, SparklesIcon } from '@heroicons/react/outline'; +import type { StatusResponse } from '@server/interfaces/api/settingsInterfaces'; import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { StatusResponse } from '../../../server/interfaces/api/settingsInterfaces'; -import useSettings from '../../hooks/useSettings'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Modal from '../Common/Modal'; -import Transition from '../Transition'; const messages = defineMessages({ appUpdated: '{applicationTitle} Updated', diff --git a/src/components/TitleCard/ErrorCard.tsx b/src/components/TitleCard/ErrorCard.tsx index dfdedc43..b244fb6d 100644 --- a/src/components/TitleCard/ErrorCard.tsx +++ b/src/components/TitleCard/ErrorCard.tsx @@ -1,9 +1,9 @@ +import Button from '@app/components/Common/Button'; +import globalMessages from '@app/i18n/globalMessages'; import { CheckIcon, TrashIcon } from '@heroicons/react/solid'; import axios from 'axios'; import { defineMessages, useIntl } from 'react-intl'; import { mutate } from 'swr'; -import globalMessages from '../../i18n/globalMessages'; -import Button from '../Common/Button'; interface ErrorCardProps { id: number; diff --git a/src/components/TitleCard/TmdbTitleCard.tsx b/src/components/TitleCard/TmdbTitleCard.tsx index 974a07d4..f031c997 100644 --- a/src/components/TitleCard/TmdbTitleCard.tsx +++ b/src/components/TitleCard/TmdbTitleCard.tsx @@ -1,9 +1,9 @@ +import TitleCard from '@app/components/TitleCard'; +import { Permission, useUser } from '@app/hooks/useUser'; +import type { MovieDetails } from '@server/models/Movie'; +import type { TvDetails } from '@server/models/Tv'; import { useInView } from 'react-intersection-observer'; import useSWR from 'swr'; -import TitleCard from '.'; -import type { MovieDetails } from '../../../server/models/Movie'; -import type { TvDetails } from '../../../server/models/Tv'; -import { Permission, useUser } from '../../hooks/useUser'; export interface TmdbTitleCardProps { id: number; diff --git a/src/components/TitleCard/index.tsx b/src/components/TitleCard/index.tsx index 73950c9c..8cb667b2 100644 --- a/src/components/TitleCard/index.tsx +++ b/src/components/TitleCard/index.tsx @@ -1,21 +1,21 @@ +import Spinner from '@app/assets/spinner.svg'; +import Button from '@app/components/Common/Button'; +import CachedImage from '@app/components/Common/CachedImage'; +import RequestModal from '@app/components/RequestModal'; +import ErrorCard from '@app/components/TitleCard/ErrorCard'; +import Placeholder from '@app/components/TitleCard/Placeholder'; +import Transition from '@app/components/Transition'; +import { useIsTouch } from '@app/hooks/useIsTouch'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import { withProperties } from '@app/utils/typeHelpers'; import { DownloadIcon } from '@heroicons/react/outline'; import { BellIcon, CheckIcon, ClockIcon } from '@heroicons/react/solid'; +import { MediaStatus } from '@server/constants/media'; +import type { MediaType } from '@server/models/Search'; import Link from 'next/link'; import { useCallback, useEffect, useState } from 'react'; import { useIntl } from 'react-intl'; -import { MediaStatus } from '../../../server/constants/media'; -import type { MediaType } from '../../../server/models/Search'; -import Spinner from '../../assets/spinner.svg'; -import { useIsTouch } from '../../hooks/useIsTouch'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import { withProperties } from '../../utils/typeHelpers'; -import Button from '../Common/Button'; -import CachedImage from '../Common/CachedImage'; -import RequestModal from '../RequestModal'; -import Transition from '../Transition'; -import ErrorCard from './ErrorCard'; -import Placeholder from './Placeholder'; interface TitleCardProps { id: number; diff --git a/src/components/Toast/index.tsx b/src/components/Toast/index.tsx index 23e202d1..e5f8da6d 100644 --- a/src/components/Toast/index.tsx +++ b/src/components/Toast/index.tsx @@ -1,3 +1,4 @@ +import Transition from '@app/components/Transition'; import { CheckCircleIcon, ExclamationCircleIcon, @@ -6,7 +7,6 @@ import { } from '@heroicons/react/outline'; import { XIcon } from '@heroicons/react/solid'; import type { ToastProps } from 'react-toast-notifications'; -import Transition from '../Transition'; const Toast = ({ appearance, diff --git a/src/components/TvDetails/TvCast/index.tsx b/src/components/TvDetails/TvCast/index.tsx index d30ec71b..4c7697aa 100644 --- a/src/components/TvDetails/TvCast/index.tsx +++ b/src/components/TvDetails/TvCast/index.tsx @@ -1,13 +1,13 @@ +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import PersonCard from '@app/components/PersonCard'; +import Error from '@app/pages/_error'; +import type { TvDetails } from '@server/models/Tv'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { TvDetails } from '../../../../server/models/Tv'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import PersonCard from '../../PersonCard'; const messages = defineMessages({ fullseriescast: 'Full Series Cast', diff --git a/src/components/TvDetails/TvCrew/index.tsx b/src/components/TvDetails/TvCrew/index.tsx index 7dff59db..a6a65e96 100644 --- a/src/components/TvDetails/TvCrew/index.tsx +++ b/src/components/TvDetails/TvCrew/index.tsx @@ -1,13 +1,13 @@ +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import PersonCard from '@app/components/PersonCard'; +import Error from '@app/pages/_error'; +import type { TvDetails } from '@server/models/Tv'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { TvDetails } from '../../../../server/models/Tv'; -import Error from '../../../pages/_error'; -import Header from '../../Common/Header'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import PersonCard from '../../PersonCard'; const messages = defineMessages({ fullseriescrew: 'Full Series Crew', diff --git a/src/components/TvDetails/TvRecommendations.tsx b/src/components/TvDetails/TvRecommendations.tsx index d5563350..4ecbd248 100644 --- a/src/components/TvDetails/TvRecommendations.tsx +++ b/src/components/TvDetails/TvRecommendations.tsx @@ -1,14 +1,14 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { TvResult } from '@server/models/Search'; +import type { TvDetails } from '@server/models/Tv'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { TvResult } from '../../../server/models/Search'; -import type { TvDetails } from '../../../server/models/Tv'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; const messages = defineMessages({ recommendations: 'Recommendations', diff --git a/src/components/TvDetails/TvSimilar.tsx b/src/components/TvDetails/TvSimilar.tsx index 74a2c7d9..fb254a51 100644 --- a/src/components/TvDetails/TvSimilar.tsx +++ b/src/components/TvDetails/TvSimilar.tsx @@ -1,14 +1,14 @@ +import Header from '@app/components/Common/Header'; +import ListView from '@app/components/Common/ListView'; +import PageTitle from '@app/components/Common/PageTitle'; +import useDiscover from '@app/hooks/useDiscover'; +import Error from '@app/pages/_error'; +import type { TvResult } from '@server/models/Search'; +import type { TvDetails } from '@server/models/Tv'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { TvResult } from '../../../server/models/Search'; -import type { TvDetails } from '../../../server/models/Tv'; -import useDiscover from '../../hooks/useDiscover'; -import Error from '../../pages/_error'; -import Header from '../Common/Header'; -import ListView from '../Common/ListView'; -import PageTitle from '../Common/PageTitle'; const messages = defineMessages({ similar: 'Similar Series', diff --git a/src/components/TvDetails/index.tsx b/src/components/TvDetails/index.tsx index 0a24a888..53d558f2 100644 --- a/src/components/TvDetails/index.tsx +++ b/src/components/TvDetails/index.tsx @@ -1,3 +1,29 @@ +import RTAudFresh from '@app/assets/rt_aud_fresh.svg'; +import RTAudRotten from '@app/assets/rt_aud_rotten.svg'; +import RTFresh from '@app/assets/rt_fresh.svg'; +import RTRotten from '@app/assets/rt_rotten.svg'; +import TmdbLogo from '@app/assets/tmdb_logo.svg'; +import Button from '@app/components/Common/Button'; +import CachedImage from '@app/components/Common/CachedImage'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import type { PlayButtonLink } from '@app/components/Common/PlayButton'; +import PlayButton from '@app/components/Common/PlayButton'; +import ExternalLinkBlock from '@app/components/ExternalLinkBlock'; +import IssueModal from '@app/components/IssueModal'; +import ManageSlideOver from '@app/components/ManageSlideOver'; +import MediaSlider from '@app/components/MediaSlider'; +import PersonCard from '@app/components/PersonCard'; +import RequestButton from '@app/components/RequestButton'; +import RequestModal from '@app/components/RequestModal'; +import Slider from '@app/components/Slider'; +import StatusBadge from '@app/components/StatusBadge'; +import useLocale from '@app/hooks/useLocale'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import { sortCrewPriority } from '@app/utils/creditHelpers'; import { ArrowCircleRightIcon, CogIcon, @@ -5,6 +31,12 @@ import { FilmIcon, PlayIcon, } from '@heroicons/react/outline'; +import type { RTRating } from '@server/api/rottentomatoes'; +import { ANIME_KEYWORD_ID } from '@server/api/themoviedb/constants'; +import { IssueStatus } from '@server/constants/issue'; +import { MediaStatus } from '@server/constants/media'; +import type { Crew } from '@server/models/common'; +import type { TvDetails as TvDetailsType } from '@server/models/Tv'; import { hasFlag } from 'country-flag-icons'; import 'country-flag-icons/3x2/flags.css'; import Link from 'next/link'; @@ -12,38 +44,6 @@ import { useRouter } from 'next/router'; import { useEffect, useMemo, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { RTRating } from '../../../server/api/rottentomatoes'; -import { ANIME_KEYWORD_ID } from '../../../server/api/themoviedb/constants'; -import { IssueStatus } from '../../../server/constants/issue'; -import { MediaStatus } from '../../../server/constants/media'; -import type { Crew } from '../../../server/models/common'; -import type { TvDetails as TvDetailsType } from '../../../server/models/Tv'; -import RTAudFresh from '../../assets/rt_aud_fresh.svg'; -import RTAudRotten from '../../assets/rt_aud_rotten.svg'; -import RTFresh from '../../assets/rt_fresh.svg'; -import RTRotten from '../../assets/rt_rotten.svg'; -import TmdbLogo from '../../assets/tmdb_logo.svg'; -import useLocale from '../../hooks/useLocale'; -import useSettings from '../../hooks/useSettings'; -import { Permission, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Error from '../../pages/_error'; -import { sortCrewPriority } from '../../utils/creditHelpers'; -import Button from '../Common/Button'; -import CachedImage from '../Common/CachedImage'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import type { PlayButtonLink } from '../Common/PlayButton'; -import PlayButton from '../Common/PlayButton'; -import ExternalLinkBlock from '../ExternalLinkBlock'; -import IssueModal from '../IssueModal'; -import ManageSlideOver from '../ManageSlideOver'; -import MediaSlider from '../MediaSlider'; -import PersonCard from '../PersonCard'; -import RequestButton from '../RequestButton'; -import RequestModal from '../RequestModal'; -import Slider from '../Slider'; -import StatusBadge from '../StatusBadge'; const messages = defineMessages({ firstAirDate: 'First Air Date', diff --git a/src/components/UserList/BulkEditModal.tsx b/src/components/UserList/BulkEditModal.tsx index 0ef3a16b..7784a6ee 100644 --- a/src/components/UserList/BulkEditModal.tsx +++ b/src/components/UserList/BulkEditModal.tsx @@ -1,13 +1,13 @@ +import Modal from '@app/components/Common/Modal'; +import PermissionEdit from '@app/components/PermissionEdit'; +import type { User } from '@app/hooks/useUser'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { PencilIcon } from '@heroicons/react/solid'; import axios from 'axios'; import { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; -import type { User } from '../../hooks/useUser'; -import { useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Modal from '../Common/Modal'; -import PermissionEdit from '../PermissionEdit'; interface BulkEditProps { selectedUserIds: number[]; diff --git a/src/components/UserList/PlexImportModal.tsx b/src/components/UserList/PlexImportModal.tsx index 48b074e7..d9814f61 100644 --- a/src/components/UserList/PlexImportModal.tsx +++ b/src/components/UserList/PlexImportModal.tsx @@ -1,13 +1,13 @@ +import Alert from '@app/components/Common/Alert'; +import Modal from '@app/components/Common/Modal'; +import useSettings from '@app/hooks/useSettings'; +import globalMessages from '@app/i18n/globalMessages'; import { InboxInIcon } from '@heroicons/react/solid'; import axios from 'axios'; import { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; -import useSettings from '../../hooks/useSettings'; -import globalMessages from '../../i18n/globalMessages'; -import Alert from '../Common/Alert'; -import Modal from '../Common/Modal'; interface PlexImportProps { onCancel?: () => void; diff --git a/src/components/UserList/index.tsx b/src/components/UserList/index.tsx index 34ea358c..dd548ec3 100644 --- a/src/components/UserList/index.tsx +++ b/src/components/UserList/index.tsx @@ -1,3 +1,20 @@ +import Alert from '@app/components/Common/Alert'; +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import Header from '@app/components/Common/Header'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import Modal from '@app/components/Common/Modal'; +import PageTitle from '@app/components/Common/PageTitle'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import Table from '@app/components/Common/Table'; +import Transition from '@app/components/Transition'; +import BulkEditModal from '@app/components/UserList/BulkEditModal'; +import PlexImportModal from '@app/components/UserList/PlexImportModal'; +import useSettings from '@app/hooks/useSettings'; +import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams'; +import type { User } from '@app/hooks/useUser'; +import { Permission, UserType, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { TrashIcon } from '@heroicons/react/outline'; import { ChevronLeftIcon, @@ -7,6 +24,8 @@ import { SortDescendingIcon, UserAddIcon, } from '@heroicons/react/solid'; +import type { UserResultsResponse } from '@server/interfaces/api/userInterfaces'; +import { hasPermission } from '@server/lib/permissions'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import Link from 'next/link'; @@ -16,25 +35,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import type { UserResultsResponse } from '../../../server/interfaces/api/userInterfaces'; -import { hasPermission } from '../../../server/lib/permissions'; -import useSettings from '../../hooks/useSettings'; -import { useUpdateQueryParams } from '../../hooks/useUpdateQueryParams'; -import type { User } from '../../hooks/useUser'; -import { Permission, UserType, useUser } from '../../hooks/useUser'; -import globalMessages from '../../i18n/globalMessages'; -import Alert from '../Common/Alert'; -import Badge from '../Common/Badge'; -import Button from '../Common/Button'; -import Header from '../Common/Header'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import Modal from '../Common/Modal'; -import PageTitle from '../Common/PageTitle'; -import SensitiveInput from '../Common/SensitiveInput'; -import Table from '../Common/Table'; -import Transition from '../Transition'; -import BulkEditModal from './BulkEditModal'; -import PlexImportModal from './PlexImportModal'; const messages = defineMessages({ users: 'Users', diff --git a/src/components/UserProfile/ProfileHeader/index.tsx b/src/components/UserProfile/ProfileHeader/index.tsx index 1a60200a..00f14441 100644 --- a/src/components/UserProfile/ProfileHeader/index.tsx +++ b/src/components/UserProfile/ProfileHeader/index.tsx @@ -1,9 +1,9 @@ +import Button from '@app/components/Common/Button'; +import type { User } from '@app/hooks/useUser'; +import { Permission, useUser } from '@app/hooks/useUser'; import { CogIcon, UserIcon } from '@heroicons/react/solid'; import Link from 'next/link'; import { defineMessages, useIntl } from 'react-intl'; -import type { User } from '../../../hooks/useUser'; -import { Permission, useUser } from '../../../hooks/useUser'; -import Button from '../../Common/Button'; const messages = defineMessages({ settings: 'Edit Settings', diff --git a/src/components/UserProfile/UserSettings/UserGeneralSettings/index.tsx b/src/components/UserProfile/UserSettings/UserGeneralSettings/index.tsx index d5d3cf9b..fe768b28 100644 --- a/src/components/UserProfile/UserSettings/UserGeneralSettings/index.tsx +++ b/src/components/UserProfile/UserSettings/UserGeneralSettings/index.tsx @@ -1,4 +1,19 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import LanguageSelector from '@app/components/LanguageSelector'; +import QuotaSelector from '@app/components/QuotaSelector'; +import RegionSelector from '@app/components/RegionSelector'; +import type { AvailableLocale } from '@app/context/LanguageContext'; +import { availableLanguages } from '@app/context/LanguageContext'; +import useLocale from '@app/hooks/useLocale'; +import useSettings from '@app/hooks/useSettings'; +import { Permission, UserType, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; import { SaveIcon } from '@heroicons/react/outline'; +import type { UserSettingsGeneralResponse } from '@server/interfaces/api/userSettingsInterfaces'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import { useRouter } from 'next/router'; @@ -7,21 +22,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import type { UserSettingsGeneralResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; -import type { AvailableLocale } from '../../../../context/LanguageContext'; -import { availableLanguages } from '../../../../context/LanguageContext'; -import useLocale from '../../../../hooks/useLocale'; -import useSettings from '../../../../hooks/useSettings'; -import { Permission, UserType, useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Error from '../../../../pages/_error'; -import Badge from '../../../Common/Badge'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import PageTitle from '../../../Common/PageTitle'; -import LanguageSelector from '../../../LanguageSelector'; -import QuotaSelector from '../../../QuotaSelector'; -import RegionSelector from '../../../RegionSelector'; const messages = defineMessages({ general: 'General', diff --git a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsDiscord.tsx b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsDiscord.tsx index 07f6867e..121018fc 100644 --- a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsDiscord.tsx +++ b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsDiscord.tsx @@ -1,4 +1,10 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { SaveIcon } from '@heroicons/react/outline'; +import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import { useRouter } from 'next/router'; @@ -6,12 +12,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import type { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; -import { useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ discordsettingssaved: 'Discord notification settings saved successfully!', diff --git a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail.tsx b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail.tsx index 30dd1795..167454ae 100644 --- a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail.tsx +++ b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail.tsx @@ -1,4 +1,15 @@ +import Badge from '@app/components/Common/Badge'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import NotificationTypeSelector, { + ALL_NOTIFICATIONS, +} from '@app/components/NotificationTypeSelector'; +import { OpenPgpLink } from '@app/components/Settings/Notifications/NotificationsEmail'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { SaveIcon } from '@heroicons/react/outline'; +import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import axios from 'axios'; import { Form, Formik } from 'formik'; import { useRouter } from 'next/router'; @@ -6,17 +17,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import type { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; -import { useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Badge from '../../../Common/Badge'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import SensitiveInput from '../../../Common/SensitiveInput'; -import NotificationTypeSelector, { - ALL_NOTIFICATIONS, -} from '../../../NotificationTypeSelector'; -import { OpenPgpLink } from '../../../Settings/Notifications/NotificationsEmail'; const messages = defineMessages({ emailsettingssaved: 'Email notification settings saved successfully!', diff --git a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushbullet.tsx b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushbullet.tsx index eabaf941..feadd1ac 100644 --- a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushbullet.tsx +++ b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushbullet.tsx @@ -1,3 +1,10 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import axios from 'axios'; import { Form, Formik } from 'formik'; import { useRouter } from 'next/router'; @@ -5,13 +12,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import type { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; -import { useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import SensitiveInput from '../../../Common/SensitiveInput'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ pushbulletsettingssaved: diff --git a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushover.tsx b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushover.tsx index aea86fc5..47b3df51 100644 --- a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushover.tsx +++ b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushover.tsx @@ -1,3 +1,10 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import useSettings from '@app/hooks/useSettings'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import { useRouter } from 'next/router'; @@ -5,13 +12,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import type { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; -import useSettings from '../../../../hooks/useSettings'; -import { useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ pushoversettingssaved: 'Pushover notification settings saved successfully!', diff --git a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsTelegram.tsx b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsTelegram.tsx index 7295237c..5f665fa6 100644 --- a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsTelegram.tsx +++ b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsTelegram.tsx @@ -1,4 +1,10 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector from '@app/components/NotificationTypeSelector'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { SaveIcon } from '@heroicons/react/outline'; +import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import axios from 'axios'; import { Field, Form, Formik } from 'formik'; import { useRouter } from 'next/router'; @@ -6,12 +12,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import type { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; -import { useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector from '../../../NotificationTypeSelector'; const messages = defineMessages({ telegramsettingssaved: 'Telegram notification settings saved successfully!', diff --git a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsWebPush.tsx b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsWebPush.tsx index 9987a9b8..80a0ec72 100644 --- a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsWebPush.tsx +++ b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsWebPush.tsx @@ -1,18 +1,18 @@ +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import NotificationTypeSelector, { + ALL_NOTIFICATIONS, +} from '@app/components/NotificationTypeSelector'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; import { SaveIcon } from '@heroicons/react/outline'; +import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import axios from 'axios'; import { Form, Formik } from 'formik'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; -import type { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; -import { useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import NotificationTypeSelector, { - ALL_NOTIFICATIONS, -} from '../../../NotificationTypeSelector'; const messages = defineMessages({ webpushsettingssaved: 'Web push notification settings saved successfully!', diff --git a/src/components/UserProfile/UserSettings/UserNotificationSettings/index.tsx b/src/components/UserProfile/UserSettings/UserNotificationSettings/index.tsx index b7af6fbc..97f12369 100644 --- a/src/components/UserProfile/UserSettings/UserNotificationSettings/index.tsx +++ b/src/components/UserProfile/UserSettings/UserNotificationSettings/index.tsx @@ -1,19 +1,19 @@ +import DiscordLogo from '@app/assets/extlogos/discord.svg'; +import PushbulletLogo from '@app/assets/extlogos/pushbullet.svg'; +import PushoverLogo from '@app/assets/extlogos/pushover.svg'; +import TelegramLogo from '@app/assets/extlogos/telegram.svg'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import type { SettingsRoute } from '@app/components/Common/SettingsTabs'; +import SettingsTabs from '@app/components/Common/SettingsTabs'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; import { CloudIcon, MailIcon } from '@heroicons/react/solid'; +import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; -import DiscordLogo from '../../../../assets/extlogos/discord.svg'; -import PushbulletLogo from '../../../../assets/extlogos/pushbullet.svg'; -import PushoverLogo from '../../../../assets/extlogos/pushover.svg'; -import TelegramLogo from '../../../../assets/extlogos/telegram.svg'; -import { useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Error from '../../../../pages/_error'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import PageTitle from '../../../Common/PageTitle'; -import type { SettingsRoute } from '../../../Common/SettingsTabs'; -import SettingsTabs from '../../../Common/SettingsTabs'; const messages = defineMessages({ notifications: 'Notifications', diff --git a/src/components/UserProfile/UserSettings/UserPasswordChange/index.tsx b/src/components/UserProfile/UserSettings/UserPasswordChange/index.tsx index d25d97d3..aea79f72 100644 --- a/src/components/UserProfile/UserSettings/UserPasswordChange/index.tsx +++ b/src/components/UserProfile/UserSettings/UserPasswordChange/index.tsx @@ -1,3 +1,11 @@ +import Alert from '@app/components/Common/Alert'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import SensitiveInput from '@app/components/Common/SensitiveInput'; +import { Permission, useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; import { SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Form, Formik } from 'formik'; @@ -6,14 +14,6 @@ import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; import * as Yup from 'yup'; -import { Permission, useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Error from '../../../../pages/_error'; -import Alert from '../../../Common/Alert'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import PageTitle from '../../../Common/PageTitle'; -import SensitiveInput from '../../../Common/SensitiveInput'; const messages = defineMessages({ password: 'Password', diff --git a/src/components/UserProfile/UserSettings/UserPermissions/index.tsx b/src/components/UserProfile/UserSettings/UserPermissions/index.tsx index 23434d0a..84b671b5 100644 --- a/src/components/UserProfile/UserSettings/UserPermissions/index.tsx +++ b/src/components/UserProfile/UserSettings/UserPermissions/index.tsx @@ -1,3 +1,11 @@ +import Alert from '@app/components/Common/Alert'; +import Button from '@app/components/Common/Button'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import PermissionEdit from '@app/components/PermissionEdit'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; import { SaveIcon } from '@heroicons/react/outline'; import axios from 'axios'; import { Form, Formik } from 'formik'; @@ -5,14 +13,6 @@ import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR from 'swr'; -import { useUser } from '../../../../hooks/useUser'; -import globalMessages from '../../../../i18n/globalMessages'; -import Error from '../../../../pages/_error'; -import Alert from '../../../Common/Alert'; -import Button from '../../../Common/Button'; -import LoadingSpinner from '../../../Common/LoadingSpinner'; -import PageTitle from '../../../Common/PageTitle'; -import PermissionEdit from '../../../PermissionEdit'; const messages = defineMessages({ toastSettingsSuccess: 'Permissions saved successfully!', diff --git a/src/components/UserProfile/UserSettings/index.tsx b/src/components/UserProfile/UserSettings/index.tsx index e0a36fdc..eb162807 100644 --- a/src/components/UserProfile/UserSettings/index.tsx +++ b/src/components/UserProfile/UserSettings/index.tsx @@ -1,18 +1,18 @@ +import Alert from '@app/components/Common/Alert'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import type { SettingsRoute } from '@app/components/Common/SettingsTabs'; +import SettingsTabs from '@app/components/Common/SettingsTabs'; +import ProfileHeader from '@app/components/UserProfile/ProfileHeader'; +import useSettings from '@app/hooks/useSettings'; +import { useUser } from '@app/hooks/useUser'; +import globalMessages from '@app/i18n/globalMessages'; +import Error from '@app/pages/_error'; +import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces'; +import { hasPermission, Permission } from '@server/lib/permissions'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { UserSettingsNotificationsResponse } from '../../../../server/interfaces/api/userSettingsInterfaces'; -import { hasPermission, Permission } from '../../../../server/lib/permissions'; -import useSettings from '../../../hooks/useSettings'; -import { useUser } from '../../../hooks/useUser'; -import globalMessages from '../../../i18n/globalMessages'; -import Error from '../../../pages/_error'; -import Alert from '../../Common/Alert'; -import LoadingSpinner from '../../Common/LoadingSpinner'; -import PageTitle from '../../Common/PageTitle'; -import type { SettingsRoute } from '../../Common/SettingsTabs'; -import SettingsTabs from '../../Common/SettingsTabs'; -import ProfileHeader from '../ProfileHeader'; const messages = defineMessages({ menuGeneralSettings: 'General', diff --git a/src/components/UserProfile/index.tsx b/src/components/UserProfile/index.tsx index 3fef28fc..0b521922 100644 --- a/src/components/UserProfile/index.tsx +++ b/src/components/UserProfile/index.tsx @@ -1,26 +1,26 @@ +import ImageFader from '@app/components/Common/ImageFader'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; +import PageTitle from '@app/components/Common/PageTitle'; +import ProgressCircle from '@app/components/Common/ProgressCircle'; +import RequestCard from '@app/components/RequestCard'; +import Slider from '@app/components/Slider'; +import TmdbTitleCard from '@app/components/TitleCard/TmdbTitleCard'; +import ProfileHeader from '@app/components/UserProfile/ProfileHeader'; +import { Permission, UserType, useUser } from '@app/hooks/useUser'; +import Error from '@app/pages/_error'; import { ArrowCircleRightIcon } from '@heroicons/react/outline'; +import type { + QuotaResponse, + UserRequestsResponse, + UserWatchDataResponse, +} from '@server/interfaces/api/userInterfaces'; +import type { MovieDetails } from '@server/models/Movie'; +import type { TvDetails } from '@server/models/Tv'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { useCallback, useEffect, useState } from 'react'; import { defineMessages, FormattedNumber, useIntl } from 'react-intl'; import useSWR from 'swr'; -import type { - QuotaResponse, - UserRequestsResponse, - UserWatchDataResponse, -} from '../../../server/interfaces/api/userInterfaces'; -import type { MovieDetails } from '../../../server/models/Movie'; -import type { TvDetails } from '../../../server/models/Tv'; -import { Permission, UserType, useUser } from '../../hooks/useUser'; -import Error from '../../pages/_error'; -import ImageFader from '../Common/ImageFader'; -import LoadingSpinner from '../Common/LoadingSpinner'; -import PageTitle from '../Common/PageTitle'; -import ProgressCircle from '../Common/ProgressCircle'; -import RequestCard from '../RequestCard'; -import Slider from '../Slider'; -import TmdbTitleCard from '../TitleCard/TmdbTitleCard'; -import ProfileHeader from './ProfileHeader'; const messages = defineMessages({ recentrequests: 'Recent Requests', diff --git a/src/context/InteractionContext.tsx b/src/context/InteractionContext.tsx index 9622acbf..09bdc30d 100644 --- a/src/context/InteractionContext.tsx +++ b/src/context/InteractionContext.tsx @@ -1,5 +1,5 @@ +import useInteraction from '@app/hooks/useInteraction'; import React from 'react'; -import useInteraction from '../hooks/useInteraction'; interface InteractionContextProps { isTouch?: boolean; diff --git a/src/context/SettingsContext.tsx b/src/context/SettingsContext.tsx index 45d6f574..d50add4d 100644 --- a/src/context/SettingsContext.tsx +++ b/src/context/SettingsContext.tsx @@ -1,6 +1,6 @@ +import type { PublicSettingsResponse } from '@server/interfaces/api/settingsInterfaces'; import React from 'react'; import useSWR from 'swr'; -import type { PublicSettingsResponse } from '../../server/interfaces/api/settingsInterfaces'; export interface SettingsContextProps { currentSettings: PublicSettingsResponse; diff --git a/src/context/UserContext.tsx b/src/context/UserContext.tsx index 67ebe135..bd07989b 100644 --- a/src/context/UserContext.tsx +++ b/src/context/UserContext.tsx @@ -1,7 +1,7 @@ +import type { User } from '@app/hooks/useUser'; +import { useUser } from '@app/hooks/useUser'; import { useRouter } from 'next/dist/client/router'; import { useEffect, useRef } from 'react'; -import type { User } from '../hooks/useUser'; -import { useUser } from '../hooks/useUser'; interface UserContextProps { initialUser: User; diff --git a/src/hooks/useDiscover.ts b/src/hooks/useDiscover.ts index 3bc016eb..96ea9cc7 100644 --- a/src/hooks/useDiscover.ts +++ b/src/hooks/useDiscover.ts @@ -1,5 +1,5 @@ +import { MediaStatus } from '@server/constants/media'; import useSWRInfinite from 'swr/infinite'; -import { MediaStatus } from '../../server/constants/media'; import useSettings from './useSettings'; export interface BaseSearchResult { diff --git a/src/hooks/useIsTouch.ts b/src/hooks/useIsTouch.ts index 6342b0ef..67bd4ca6 100644 --- a/src/hooks/useIsTouch.ts +++ b/src/hooks/useIsTouch.ts @@ -1,5 +1,5 @@ +import { InteractionContext } from '@app/context/InteractionContext'; import { useContext } from 'react'; -import { InteractionContext } from '../context/InteractionContext'; export const useIsTouch = (): boolean => { const { isTouch } = useContext(InteractionContext); diff --git a/src/hooks/useLocale.ts b/src/hooks/useLocale.ts index 0647e1a0..59d4d056 100644 --- a/src/hooks/useLocale.ts +++ b/src/hooks/useLocale.ts @@ -1,6 +1,6 @@ +import type { LanguageContextProps } from '@app/context/LanguageContext'; +import { LanguageContext } from '@app/context/LanguageContext'; import { useContext } from 'react'; -import type { LanguageContextProps } from '../context/LanguageContext'; -import { LanguageContext } from '../context/LanguageContext'; const useLocale = (): Omit => { const languageContext = useContext(LanguageContext); diff --git a/src/hooks/useRequestOverride.ts b/src/hooks/useRequestOverride.ts index e3b49d98..03336363 100644 --- a/src/hooks/useRequestOverride.ts +++ b/src/hooks/useRequestOverride.ts @@ -1,9 +1,9 @@ -import useSWR from 'swr'; -import type { MediaRequest } from '../../server/entity/MediaRequest'; +import type { MediaRequest } from '@server/entity/MediaRequest'; import type { ServiceCommonServer, ServiceCommonServerWithDetails, -} from '../../server/interfaces/api/serviceInterfaces'; +} from '@server/interfaces/api/serviceInterfaces'; +import useSWR from 'swr'; interface OverrideStatus { server?: string; diff --git a/src/hooks/useSearchInput.ts b/src/hooks/useSearchInput.ts index 7b7f1af6..54876357 100644 --- a/src/hooks/useSearchInput.ts +++ b/src/hooks/useSearchInput.ts @@ -1,9 +1,9 @@ /* eslint-disable react-hooks/exhaustive-deps */ +import type { Nullable } from '@app/utils/typeHelpers'; import { useRouter } from 'next/router'; import type { Dispatch, SetStateAction } from 'react'; import { useEffect, useState } from 'react'; import type { UrlObject } from 'url'; -import type { Nullable } from '../utils/typeHelpers'; import useDebouncedState from './useDebouncedState'; type Url = string | UrlObject; diff --git a/src/hooks/useSettings.ts b/src/hooks/useSettings.ts index a436afa0..2c881e65 100644 --- a/src/hooks/useSettings.ts +++ b/src/hooks/useSettings.ts @@ -1,6 +1,6 @@ +import type { SettingsContextProps } from '@app/context/SettingsContext'; +import { SettingsContext } from '@app/context/SettingsContext'; import { useContext } from 'react'; -import type { SettingsContextProps } from '../context/SettingsContext'; -import { SettingsContext } from '../context/SettingsContext'; const useSettings = (): SettingsContextProps => { const settings = useContext(SettingsContext); diff --git a/src/hooks/useUser.ts b/src/hooks/useUser.ts index d5bdc222..4dfcf090 100644 --- a/src/hooks/useUser.ts +++ b/src/hooks/useUser.ts @@ -1,9 +1,9 @@ +import { UserType } from '@server/constants/user'; +import type { PermissionCheckOptions } from '@server/lib/permissions'; +import { hasPermission, Permission } from '@server/lib/permissions'; +import type { NotificationAgentKey } from '@server/lib/settings'; import useSWR from 'swr'; import type { MutatorCallback } from 'swr/dist/types'; -import { UserType } from '../../server/constants/user'; -import type { PermissionCheckOptions } from '../../server/lib/permissions'; -import { hasPermission, Permission } from '../../server/lib/permissions'; -import type { NotificationAgentKey } from '../../server/lib/settings'; export { Permission, UserType }; export type { PermissionCheckOptions }; diff --git a/src/pages/404.tsx b/src/pages/404.tsx index 7f3e88df..3df55fc1 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -1,7 +1,7 @@ +import PageTitle from '@app/components/Common/PageTitle'; import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import Link from 'next/link'; import { defineMessages, useIntl } from 'react-intl'; -import PageTitle from '../components/Common/PageTitle'; const messages = defineMessages({ errormessagewithcode: '{statusCode} - {error}', diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 3b3112d3..a435ac7e 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,3 +1,19 @@ +import Layout from '@app/components/Layout'; +import LoadingBar from '@app/components/LoadingBar'; +import PWAHeader from '@app/components/PWAHeader'; +import ServiceWorkerSetup from '@app/components/ServiceWorkerSetup'; +import StatusChecker from '@app/components/StatusChecker'; +import Toast from '@app/components/Toast'; +import ToastContainer from '@app/components/ToastContainer'; +import { InteractionProvider } from '@app/context/InteractionContext'; +import type { AvailableLocale } from '@app/context/LanguageContext'; +import { LanguageContext } from '@app/context/LanguageContext'; +import { SettingsProvider } from '@app/context/SettingsContext'; +import { UserContext } from '@app/context/UserContext'; +import type { User } from '@app/hooks/useUser'; +import '@app/styles/globals.css'; +import { polyfillIntl } from '@app/utils/polyfillIntl'; +import type { PublicSettingsResponse } from '@server/interfaces/api/settingsInterfaces'; import axios from 'axios'; import type { AppInitialProps, AppProps } from 'next/app'; import App from 'next/app'; @@ -6,22 +22,6 @@ import { useEffect, useState } from 'react'; import { IntlProvider } from 'react-intl'; import { ToastProvider } from 'react-toast-notifications'; import { SWRConfig } from 'swr'; -import type { PublicSettingsResponse } from '../../server/interfaces/api/settingsInterfaces'; -import Layout from '../components/Layout'; -import LoadingBar from '../components/LoadingBar'; -import PWAHeader from '../components/PWAHeader'; -import ServiceWorkerSetup from '../components/ServiceWorkerSetup'; -import StatusChecker from '../components/StatusChecker'; -import Toast from '../components/Toast'; -import ToastContainer from '../components/ToastContainer'; -import { InteractionProvider } from '../context/InteractionContext'; -import type { AvailableLocale } from '../context/LanguageContext'; -import { LanguageContext } from '../context/LanguageContext'; -import { SettingsProvider } from '../context/SettingsContext'; -import { UserContext } from '../context/UserContext'; -import type { User } from '../hooks/useUser'; -import '../styles/globals.css'; -import { polyfillIntl } from '../utils/polyfillIntl'; // eslint-disable-next-line @typescript-eslint/no-explicit-any const loadLocaleData = (locale: AvailableLocale): Promise => { diff --git a/src/pages/_error.tsx b/src/pages/_error.tsx index 5b534b2d..2d5102c4 100644 --- a/src/pages/_error.tsx +++ b/src/pages/_error.tsx @@ -1,9 +1,9 @@ +import PageTitle from '@app/components/Common/PageTitle'; +import type { Undefinable } from '@app/utils/typeHelpers'; import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import type { NextPage } from 'next'; import Link from 'next/link'; import { defineMessages, useIntl } from 'react-intl'; -import PageTitle from '../components/Common/PageTitle'; -import type { Undefinable } from '../utils/typeHelpers'; interface ErrorProps { statusCode?: number; diff --git a/src/pages/collection/[collectionId]/index.tsx b/src/pages/collection/[collectionId]/index.tsx index b58f4eae..5802577b 100644 --- a/src/pages/collection/[collectionId]/index.tsx +++ b/src/pages/collection/[collectionId]/index.tsx @@ -1,7 +1,7 @@ +import CollectionDetails from '@app/components/CollectionDetails'; +import type { Collection } from '@server/models/Collection'; import axios from 'axios'; import type { GetServerSideProps, NextPage } from 'next'; -import type { Collection } from '../../../../server/models/Collection'; -import CollectionDetails from '../../../components/CollectionDetails'; interface CollectionPageProps { collection?: Collection; diff --git a/src/pages/discover/movies/genre/[genreId]/index.tsx b/src/pages/discover/movies/genre/[genreId]/index.tsx index 01dc4837..3bbb960c 100644 --- a/src/pages/discover/movies/genre/[genreId]/index.tsx +++ b/src/pages/discover/movies/genre/[genreId]/index.tsx @@ -1,5 +1,5 @@ +import DiscoverMovieGenre from '@app/components/Discover/DiscoverMovieGenre'; import type { NextPage } from 'next'; -import DiscoverMovieGenre from '../../../../../components/Discover/DiscoverMovieGenre'; const DiscoverMoviesGenrePage: NextPage = () => { return ; diff --git a/src/pages/discover/movies/genres.tsx b/src/pages/discover/movies/genres.tsx index db6e4965..fdf4a252 100644 --- a/src/pages/discover/movies/genres.tsx +++ b/src/pages/discover/movies/genres.tsx @@ -1,5 +1,5 @@ +import MovieGenreList from '@app/components/Discover/MovieGenreList'; import type { NextPage } from 'next'; -import MovieGenreList from '../../../components/Discover/MovieGenreList'; const MovieGenresPage: NextPage = () => { return ; diff --git a/src/pages/discover/movies/index.tsx b/src/pages/discover/movies/index.tsx index b20c1203..9eadf132 100644 --- a/src/pages/discover/movies/index.tsx +++ b/src/pages/discover/movies/index.tsx @@ -1,5 +1,5 @@ +import DiscoverMovies from '@app/components/Discover/DiscoverMovies'; import type { NextPage } from 'next'; -import DiscoverMovies from '../../../components/Discover/DiscoverMovies'; const DiscoverMoviesPage: NextPage = () => { return ; diff --git a/src/pages/discover/movies/language/[language]/index.tsx b/src/pages/discover/movies/language/[language]/index.tsx index 8445fb8e..b0525237 100644 --- a/src/pages/discover/movies/language/[language]/index.tsx +++ b/src/pages/discover/movies/language/[language]/index.tsx @@ -1,5 +1,5 @@ +import DiscoverMovieLanguage from '@app/components/Discover/DiscoverMovieLanguage'; import type { NextPage } from 'next'; -import DiscoverMovieLanguage from '../../../../../components/Discover/DiscoverMovieLanguage'; const DiscoverMovieLanguagePage: NextPage = () => { return ; diff --git a/src/pages/discover/movies/studio/[studioId]/index.tsx b/src/pages/discover/movies/studio/[studioId]/index.tsx index 84cfb4b5..5de5088e 100644 --- a/src/pages/discover/movies/studio/[studioId]/index.tsx +++ b/src/pages/discover/movies/studio/[studioId]/index.tsx @@ -1,5 +1,5 @@ +import DiscoverMovieStudio from '@app/components/Discover/DiscoverStudio'; import type { NextPage } from 'next'; -import DiscoverMovieStudio from '../../../../../components/Discover/DiscoverStudio'; const DiscoverMoviesStudioPage: NextPage = () => { return ; diff --git a/src/pages/discover/movies/upcoming.tsx b/src/pages/discover/movies/upcoming.tsx index 82f25ca4..c917674d 100644 --- a/src/pages/discover/movies/upcoming.tsx +++ b/src/pages/discover/movies/upcoming.tsx @@ -1,5 +1,5 @@ +import UpcomingMovies from '@app/components/Discover/Upcoming'; import type { NextPage } from 'next'; -import UpcomingMovies from '../../../components/Discover/Upcoming'; const UpcomingMoviesPage: NextPage = () => { return ; diff --git a/src/pages/discover/trending.tsx b/src/pages/discover/trending.tsx index da08fb1b..17c50c84 100644 --- a/src/pages/discover/trending.tsx +++ b/src/pages/discover/trending.tsx @@ -1,5 +1,5 @@ +import Trending from '@app/components/Discover/Trending'; import type { NextPage } from 'next'; -import Trending from '../../components/Discover/Trending'; const TrendingPage: NextPage = () => { return ; diff --git a/src/pages/discover/tv/genre/[genreId]/index.tsx b/src/pages/discover/tv/genre/[genreId]/index.tsx index 0b5261d3..639fe1ce 100644 --- a/src/pages/discover/tv/genre/[genreId]/index.tsx +++ b/src/pages/discover/tv/genre/[genreId]/index.tsx @@ -1,5 +1,5 @@ +import DiscoverTvGenre from '@app/components/Discover/DiscoverTvGenre'; import type { NextPage } from 'next'; -import DiscoverTvGenre from '../../../../../components/Discover/DiscoverTvGenre'; const DiscoverTvGenrePage: NextPage = () => { return ; diff --git a/src/pages/discover/tv/genres.tsx b/src/pages/discover/tv/genres.tsx index 1c434189..ae9632e0 100644 --- a/src/pages/discover/tv/genres.tsx +++ b/src/pages/discover/tv/genres.tsx @@ -1,5 +1,5 @@ +import TvGenreList from '@app/components/Discover/TvGenreList'; import type { NextPage } from 'next'; -import TvGenreList from '../../../components/Discover/TvGenreList'; const TvGenresPage: NextPage = () => { return ; diff --git a/src/pages/discover/tv/index.tsx b/src/pages/discover/tv/index.tsx index 5e7ba55d..b4dbc3c2 100644 --- a/src/pages/discover/tv/index.tsx +++ b/src/pages/discover/tv/index.tsx @@ -1,5 +1,5 @@ +import DiscoverTv from '@app/components/Discover/DiscoverTv'; import type { NextPage } from 'next'; -import DiscoverTv from '../../../components/Discover/DiscoverTv'; const DiscoverTvPage: NextPage = () => { return ; diff --git a/src/pages/discover/tv/language/[language]/index.tsx b/src/pages/discover/tv/language/[language]/index.tsx index ba59bc58..f3069513 100644 --- a/src/pages/discover/tv/language/[language]/index.tsx +++ b/src/pages/discover/tv/language/[language]/index.tsx @@ -1,5 +1,5 @@ +import DiscoverTvLanguage from '@app/components/Discover/DiscoverTvLanguage'; import type { NextPage } from 'next'; -import DiscoverTvLanguage from '../../../../../components/Discover/DiscoverTvLanguage'; const DiscoverTvLanguagePage: NextPage = () => { return ; diff --git a/src/pages/discover/tv/network/[networkId]/index.tsx b/src/pages/discover/tv/network/[networkId]/index.tsx index e5a442c6..38ca80bc 100644 --- a/src/pages/discover/tv/network/[networkId]/index.tsx +++ b/src/pages/discover/tv/network/[networkId]/index.tsx @@ -1,5 +1,5 @@ +import DiscoverNetwork from '@app/components/Discover/DiscoverNetwork'; import type { NextPage } from 'next'; -import DiscoverNetwork from '../../../../../components/Discover/DiscoverNetwork'; const DiscoverTvNetworkPage: NextPage = () => { return ; diff --git a/src/pages/discover/tv/upcoming.tsx b/src/pages/discover/tv/upcoming.tsx index 56d4ac77..c6de6473 100644 --- a/src/pages/discover/tv/upcoming.tsx +++ b/src/pages/discover/tv/upcoming.tsx @@ -1,5 +1,5 @@ +import DiscoverTvUpcoming from '@app/components/Discover/DiscoverTvUpcoming'; import type { NextPage } from 'next'; -import DiscoverTvUpcoming from '../../../components/Discover/DiscoverTvUpcoming'; const DiscoverTvPage: NextPage = () => { return ; diff --git a/src/pages/discover/watchlist.tsx b/src/pages/discover/watchlist.tsx index d47ddc0a..d7f0ecf1 100644 --- a/src/pages/discover/watchlist.tsx +++ b/src/pages/discover/watchlist.tsx @@ -1,5 +1,5 @@ +import DiscoverWatchlist from '@app/components/Discover/DiscoverWatchlist'; import type { NextPage } from 'next'; -import DiscoverWatchlist from '../../components/Discover/DiscoverWatchlist'; const WatchlistPage: NextPage = () => { return ; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 86c53dde..5854c5a2 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,5 +1,5 @@ +import Discover from '@app/components/Discover'; import type { NextPage } from 'next'; -import Discover from '../components/Discover'; const Index: NextPage = () => { return ; diff --git a/src/pages/issues/[issueId]/index.tsx b/src/pages/issues/[issueId]/index.tsx index f0a6c6dc..bcf6d596 100644 --- a/src/pages/issues/[issueId]/index.tsx +++ b/src/pages/issues/[issueId]/index.tsx @@ -1,7 +1,7 @@ +import IssueDetails from '@app/components/IssueDetails'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import IssueDetails from '../../../components/IssueDetails'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const IssuePage: NextPage = () => { useRouteGuard( diff --git a/src/pages/issues/index.tsx b/src/pages/issues/index.tsx index 36be8158..69fe3d6f 100644 --- a/src/pages/issues/index.tsx +++ b/src/pages/issues/index.tsx @@ -1,7 +1,7 @@ +import IssueList from '@app/components/IssueList'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import IssueList from '../../components/IssueList'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const IssuePage: NextPage = () => { useRouteGuard( diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index 90c4b5db..67281121 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -1,5 +1,5 @@ +import Login from '@app/components/Login'; import type { NextPage } from 'next'; -import Login from '../../components/Login'; const LoginPage: NextPage = () => { return ; diff --git a/src/pages/login/plex/loading.tsx b/src/pages/login/plex/loading.tsx index e7661714..e23d0aec 100644 --- a/src/pages/login/plex/loading.tsx +++ b/src/pages/login/plex/loading.tsx @@ -1,4 +1,4 @@ -import LoadingSpinner from '../../../components/Common/LoadingSpinner'; +import LoadingSpinner from '@app/components/Common/LoadingSpinner'; const PlexLoading = () => { return ( diff --git a/src/pages/movie/[movieId]/cast.tsx b/src/pages/movie/[movieId]/cast.tsx index 671f205b..803d3720 100644 --- a/src/pages/movie/[movieId]/cast.tsx +++ b/src/pages/movie/[movieId]/cast.tsx @@ -1,5 +1,5 @@ +import MovieCast from '@app/components/MovieDetails/MovieCast'; import type { NextPage } from 'next'; -import MovieCast from '../../../components/MovieDetails/MovieCast'; const MovieCastPage: NextPage = () => { return ; diff --git a/src/pages/movie/[movieId]/crew.tsx b/src/pages/movie/[movieId]/crew.tsx index de026d14..5f5f391e 100644 --- a/src/pages/movie/[movieId]/crew.tsx +++ b/src/pages/movie/[movieId]/crew.tsx @@ -1,5 +1,5 @@ +import MovieCrew from '@app/components/MovieDetails/MovieCrew'; import type { NextPage } from 'next'; -import MovieCrew from '../../../components/MovieDetails/MovieCrew'; const MovieCrewPage: NextPage = () => { return ; diff --git a/src/pages/movie/[movieId]/index.tsx b/src/pages/movie/[movieId]/index.tsx index f42c4974..2bb971c1 100644 --- a/src/pages/movie/[movieId]/index.tsx +++ b/src/pages/movie/[movieId]/index.tsx @@ -1,7 +1,7 @@ +import MovieDetails from '@app/components/MovieDetails'; +import type { MovieDetails as MovieDetailsType } from '@server/models/Movie'; import axios from 'axios'; import type { NextPage } from 'next'; -import type { MovieDetails as MovieDetailsType } from '../../../../server/models/Movie'; -import MovieDetails from '../../../components/MovieDetails'; interface MoviePageProps { movie?: MovieDetailsType; diff --git a/src/pages/movie/[movieId]/recommendations.tsx b/src/pages/movie/[movieId]/recommendations.tsx index 98a0f790..9b848e79 100644 --- a/src/pages/movie/[movieId]/recommendations.tsx +++ b/src/pages/movie/[movieId]/recommendations.tsx @@ -1,5 +1,5 @@ +import MovieRecommendations from '@app/components/MovieDetails/MovieRecommendations'; import type { NextPage } from 'next'; -import MovieRecommendations from '../../../components/MovieDetails/MovieRecommendations'; const MovieRecommendationsPage: NextPage = () => { return ; diff --git a/src/pages/movie/[movieId]/similar.tsx b/src/pages/movie/[movieId]/similar.tsx index 80f60e84..efb639d4 100644 --- a/src/pages/movie/[movieId]/similar.tsx +++ b/src/pages/movie/[movieId]/similar.tsx @@ -1,5 +1,5 @@ +import MovieSimilar from '@app/components/MovieDetails/MovieSimilar'; import type { NextPage } from 'next'; -import MovieSimilar from '../../../components/MovieDetails/MovieSimilar'; const MovieSimilarPage: NextPage = () => { return ; diff --git a/src/pages/person/[personId]/index.tsx b/src/pages/person/[personId]/index.tsx index f3d9bc18..45099631 100644 --- a/src/pages/person/[personId]/index.tsx +++ b/src/pages/person/[personId]/index.tsx @@ -1,5 +1,5 @@ +import PersonDetails from '@app/components/PersonDetails'; import type { NextPage } from 'next'; -import PersonDetails from '../../../components/PersonDetails'; const MoviePage: NextPage = () => { return ; diff --git a/src/pages/profile/index.tsx b/src/pages/profile/index.tsx index 3b4ce426..0aa8c9f3 100644 --- a/src/pages/profile/index.tsx +++ b/src/pages/profile/index.tsx @@ -1,5 +1,5 @@ +import UserProfile from '@app/components/UserProfile'; import type { NextPage } from 'next'; -import UserProfile from '../../components/UserProfile'; const UserPage: NextPage = () => { return ; diff --git a/src/pages/profile/settings/index.tsx b/src/pages/profile/settings/index.tsx index 0d2de65d..52e26473 100644 --- a/src/pages/profile/settings/index.tsx +++ b/src/pages/profile/settings/index.tsx @@ -1,6 +1,6 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserGeneralSettings from '@app/components/UserProfile/UserSettings/UserGeneralSettings'; import type { NextPage } from 'next'; -import UserSettings from '../../../components/UserProfile/UserSettings'; -import UserGeneralSettings from '../../../components/UserProfile/UserSettings/UserGeneralSettings'; const UserSettingsPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/main.tsx b/src/pages/profile/settings/main.tsx index 8cd5b2cf..cbe08f23 100644 --- a/src/pages/profile/settings/main.tsx +++ b/src/pages/profile/settings/main.tsx @@ -1,6 +1,6 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserGeneralSettings from '@app/components/UserProfile/UserSettings/UserGeneralSettings'; import type { NextPage } from 'next'; -import UserSettings from '../../../components/UserProfile/UserSettings'; -import UserGeneralSettings from '../../../components/UserProfile/UserSettings/UserGeneralSettings'; const UserSettingsMainPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/notifications/discord.tsx b/src/pages/profile/settings/notifications/discord.tsx index 5339a766..383a3be0 100644 --- a/src/pages/profile/settings/notifications/discord.tsx +++ b/src/pages/profile/settings/notifications/discord.tsx @@ -1,7 +1,7 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsDiscord from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsDiscord'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsDiscord from '../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsDiscord'; const NotificationsPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/notifications/email.tsx b/src/pages/profile/settings/notifications/email.tsx index c8c0129d..72995e0b 100644 --- a/src/pages/profile/settings/notifications/email.tsx +++ b/src/pages/profile/settings/notifications/email.tsx @@ -1,7 +1,7 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsEmail from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsEmail from '../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail'; const NotificationsPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/notifications/pushbullet.tsx b/src/pages/profile/settings/notifications/pushbullet.tsx index 41b17345..56411c89 100644 --- a/src/pages/profile/settings/notifications/pushbullet.tsx +++ b/src/pages/profile/settings/notifications/pushbullet.tsx @@ -1,7 +1,7 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsPushbullet from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushbullet'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsPushbullet from '../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushbullet'; const NotificationsPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/notifications/pushover.tsx b/src/pages/profile/settings/notifications/pushover.tsx index 8ca5bd4b..6c688cdd 100644 --- a/src/pages/profile/settings/notifications/pushover.tsx +++ b/src/pages/profile/settings/notifications/pushover.tsx @@ -1,7 +1,7 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsPushover from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushover'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsPushover from '../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushover'; const NotificationsPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/notifications/telegram.tsx b/src/pages/profile/settings/notifications/telegram.tsx index c4d13e7b..4cdd4146 100644 --- a/src/pages/profile/settings/notifications/telegram.tsx +++ b/src/pages/profile/settings/notifications/telegram.tsx @@ -1,7 +1,7 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsTelegram from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsTelegram'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsTelegram from '../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsTelegram'; const NotificationsPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/notifications/webpush.tsx b/src/pages/profile/settings/notifications/webpush.tsx index 54a400b5..8dce6a96 100644 --- a/src/pages/profile/settings/notifications/webpush.tsx +++ b/src/pages/profile/settings/notifications/webpush.tsx @@ -1,7 +1,7 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserWebPushSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsWebPush'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserWebPushSettings from '../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsWebPush'; const WebPushProfileNotificationsPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/password.tsx b/src/pages/profile/settings/password.tsx index 6e777e27..4c30eb7f 100644 --- a/src/pages/profile/settings/password.tsx +++ b/src/pages/profile/settings/password.tsx @@ -1,6 +1,6 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserPasswordChange from '@app/components/UserProfile/UserSettings/UserPasswordChange'; import type { NextPage } from 'next'; -import UserSettings from '../../../components/UserProfile/UserSettings'; -import UserPasswordChange from '../../../components/UserProfile/UserSettings/UserPasswordChange'; const UserPassswordPage: NextPage = () => { return ( diff --git a/src/pages/profile/settings/permissions.tsx b/src/pages/profile/settings/permissions.tsx index c228437a..9c68a84a 100644 --- a/src/pages/profile/settings/permissions.tsx +++ b/src/pages/profile/settings/permissions.tsx @@ -1,6 +1,6 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserPermissions from '@app/components/UserProfile/UserSettings/UserPermissions'; import type { NextPage } from 'next'; -import UserSettings from '../../../components/UserProfile/UserSettings'; -import UserPermissions from '../../../components/UserProfile/UserSettings/UserPermissions'; const UserPermissionsPage: NextPage = () => { return ( diff --git a/src/pages/requests/index.tsx b/src/pages/requests/index.tsx index 03967cb4..f0368bb5 100644 --- a/src/pages/requests/index.tsx +++ b/src/pages/requests/index.tsx @@ -1,5 +1,5 @@ +import RequestList from '@app/components/RequestList'; import type { NextPage } from 'next'; -import RequestList from '../../components/RequestList'; const RequestsPage: NextPage = () => { return ; diff --git a/src/pages/resetpassword/[guid]/index.tsx b/src/pages/resetpassword/[guid]/index.tsx index 7220fd9a..04334b57 100644 --- a/src/pages/resetpassword/[guid]/index.tsx +++ b/src/pages/resetpassword/[guid]/index.tsx @@ -1,5 +1,5 @@ +import ResetPassword from '@app/components/ResetPassword'; import type { NextPage } from 'next'; -import ResetPassword from '../../../components/ResetPassword'; const ResetPasswordPage: NextPage = () => { return ; diff --git a/src/pages/resetpassword/index.tsx b/src/pages/resetpassword/index.tsx index fb1648f0..6d1a904c 100644 --- a/src/pages/resetpassword/index.tsx +++ b/src/pages/resetpassword/index.tsx @@ -1,5 +1,5 @@ +import RequestResetLink from '@app/components/ResetPassword/RequestResetLink'; import type { NextPage } from 'next'; -import RequestResetLink from '../../components/ResetPassword/RequestResetLink'; const RequestResetLinkPage: NextPage = () => { return ; diff --git a/src/pages/search.tsx b/src/pages/search.tsx index 6db1d6d2..333499d8 100644 --- a/src/pages/search.tsx +++ b/src/pages/search.tsx @@ -1,4 +1,4 @@ -import Search from '../components/Search'; +import Search from '@app/components/Search'; const SearchPage = () => { return ; diff --git a/src/pages/settings/about.tsx b/src/pages/settings/about.tsx index 8fa6d29c..2bec4f0e 100644 --- a/src/pages/settings/about.tsx +++ b/src/pages/settings/about.tsx @@ -1,8 +1,8 @@ +import SettingsAbout from '@app/components/Settings/SettingsAbout'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import SettingsAbout from '../../components/Settings/SettingsAbout'; -import SettingsLayout from '../../components/Settings/SettingsLayout'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const SettingsAboutPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/index.tsx b/src/pages/settings/index.tsx index 5e30a409..5ca5a150 100644 --- a/src/pages/settings/index.tsx +++ b/src/pages/settings/index.tsx @@ -1,8 +1,8 @@ +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsMain from '@app/components/Settings/SettingsMain'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import SettingsLayout from '../../components/Settings/SettingsLayout'; -import SettingsMain from '../../components/Settings/SettingsMain'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const SettingsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/jobs.tsx b/src/pages/settings/jobs.tsx index 60deb0cd..97e6743d 100644 --- a/src/pages/settings/jobs.tsx +++ b/src/pages/settings/jobs.tsx @@ -1,8 +1,8 @@ +import SettingsJobs from '@app/components/Settings/SettingsJobsCache'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import SettingsJobs from '../../components/Settings/SettingsJobsCache'; -import SettingsLayout from '../../components/Settings/SettingsLayout'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const SettingsMainPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/logs.tsx b/src/pages/settings/logs.tsx index 93eb8b8e..8fbc3272 100644 --- a/src/pages/settings/logs.tsx +++ b/src/pages/settings/logs.tsx @@ -1,8 +1,8 @@ +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsLogs from '@app/components/Settings/SettingsLogs'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import SettingsLayout from '../../components/Settings/SettingsLayout'; -import SettingsLogs from '../../components/Settings/SettingsLogs'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const SettingsLogsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/main.tsx b/src/pages/settings/main.tsx index 4999d287..1b44fd65 100644 --- a/src/pages/settings/main.tsx +++ b/src/pages/settings/main.tsx @@ -1,8 +1,8 @@ +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsMain from '@app/components/Settings/SettingsMain'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import SettingsLayout from '../../components/Settings/SettingsLayout'; -import SettingsMain from '../../components/Settings/SettingsMain'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const SettingsMainPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/discord.tsx b/src/pages/settings/notifications/discord.tsx index 10540b4b..7a583a22 100644 --- a/src/pages/settings/notifications/discord.tsx +++ b/src/pages/settings/notifications/discord.tsx @@ -1,9 +1,9 @@ +import NotificationsDiscord from '@app/components/Settings/Notifications/NotificationsDiscord'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsDiscord from '../../../components/Settings/Notifications/NotificationsDiscord'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/email.tsx b/src/pages/settings/notifications/email.tsx index 2ec4fbd5..2193f176 100644 --- a/src/pages/settings/notifications/email.tsx +++ b/src/pages/settings/notifications/email.tsx @@ -1,9 +1,9 @@ +import NotificationsEmail from '@app/components/Settings/Notifications/NotificationsEmail'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsEmail from '../../../components/Settings/Notifications/NotificationsEmail'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/gotify.tsx b/src/pages/settings/notifications/gotify.tsx index 86a83e73..6ca4bd98 100644 --- a/src/pages/settings/notifications/gotify.tsx +++ b/src/pages/settings/notifications/gotify.tsx @@ -1,9 +1,9 @@ +import NotificationsGotify from '@app/components/Settings/Notifications/NotificationsGotify'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsGotify from '../../../components/Settings/Notifications/NotificationsGotify'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/lunasea.tsx b/src/pages/settings/notifications/lunasea.tsx index 00a7a0a7..a9662fdd 100644 --- a/src/pages/settings/notifications/lunasea.tsx +++ b/src/pages/settings/notifications/lunasea.tsx @@ -1,9 +1,9 @@ +import NotificationsLunaSea from '@app/components/Settings/Notifications/NotificationsLunaSea'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsLunaSea from '../../../components/Settings/Notifications/NotificationsLunaSea'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/pushbullet.tsx b/src/pages/settings/notifications/pushbullet.tsx index 9002d66a..50c1d98b 100644 --- a/src/pages/settings/notifications/pushbullet.tsx +++ b/src/pages/settings/notifications/pushbullet.tsx @@ -1,9 +1,9 @@ +import NotificationsPushbullet from '@app/components/Settings/Notifications/NotificationsPushbullet'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsPushbullet from '../../../components/Settings/Notifications/NotificationsPushbullet'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/pushover.tsx b/src/pages/settings/notifications/pushover.tsx index b3262ab2..4211e668 100644 --- a/src/pages/settings/notifications/pushover.tsx +++ b/src/pages/settings/notifications/pushover.tsx @@ -1,9 +1,9 @@ +import NotificationsPushover from '@app/components/Settings/Notifications/NotificationsPushover'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsPushover from '../../../components/Settings/Notifications/NotificationsPushover'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/slack.tsx b/src/pages/settings/notifications/slack.tsx index 98340f57..1ee8a963 100644 --- a/src/pages/settings/notifications/slack.tsx +++ b/src/pages/settings/notifications/slack.tsx @@ -1,9 +1,9 @@ +import NotificationsSlack from '@app/components/Settings/Notifications/NotificationsSlack'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsSlack from '../../../components/Settings/Notifications/NotificationsSlack'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsSlackPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/telegram.tsx b/src/pages/settings/notifications/telegram.tsx index e3b096c9..e4d98d5c 100644 --- a/src/pages/settings/notifications/telegram.tsx +++ b/src/pages/settings/notifications/telegram.tsx @@ -1,9 +1,9 @@ +import NotificationsTelegram from '@app/components/Settings/Notifications/NotificationsTelegram'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsTelegram from '../../../components/Settings/Notifications/NotificationsTelegram'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/webhook.tsx b/src/pages/settings/notifications/webhook.tsx index d06c1b65..52ce2e01 100644 --- a/src/pages/settings/notifications/webhook.tsx +++ b/src/pages/settings/notifications/webhook.tsx @@ -1,9 +1,9 @@ +import NotificationsWebhook from '@app/components/Settings/Notifications/NotificationsWebhook'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsWebhook from '../../../components/Settings/Notifications/NotificationsWebhook'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/notifications/webpush.tsx b/src/pages/settings/notifications/webpush.tsx index c517c704..cf2e2956 100644 --- a/src/pages/settings/notifications/webpush.tsx +++ b/src/pages/settings/notifications/webpush.tsx @@ -1,9 +1,9 @@ +import NotificationsWebPush from '@app/components/Settings/Notifications/NotificationsWebPush'; +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsNotifications from '@app/components/Settings/SettingsNotifications'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import NotificationsWebPush from '../../../components/Settings/Notifications/NotificationsWebPush'; -import SettingsLayout from '../../../components/Settings/SettingsLayout'; -import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const NotificationsWebPushPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/plex.tsx b/src/pages/settings/plex.tsx index 589851b3..f2871da1 100644 --- a/src/pages/settings/plex.tsx +++ b/src/pages/settings/plex.tsx @@ -1,8 +1,8 @@ +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsPlex from '@app/components/Settings/SettingsPlex'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import SettingsLayout from '../../components/Settings/SettingsLayout'; -import SettingsPlex from '../../components/Settings/SettingsPlex'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const PlexSettingsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/services.tsx b/src/pages/settings/services.tsx index c061c82a..a93e4217 100644 --- a/src/pages/settings/services.tsx +++ b/src/pages/settings/services.tsx @@ -1,8 +1,8 @@ +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsServices from '@app/components/Settings/SettingsServices'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import SettingsLayout from '../../components/Settings/SettingsLayout'; -import SettingsServices from '../../components/Settings/SettingsServices'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const ServicesSettingsPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/settings/users.tsx b/src/pages/settings/users.tsx index 3e93be1b..b1770d1e 100644 --- a/src/pages/settings/users.tsx +++ b/src/pages/settings/users.tsx @@ -1,8 +1,8 @@ +import SettingsLayout from '@app/components/Settings/SettingsLayout'; +import SettingsUsers from '@app/components/Settings/SettingsUsers'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import SettingsLayout from '../../components/Settings/SettingsLayout'; -import SettingsUsers from '../../components/Settings/SettingsUsers'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const SettingsUsersPage: NextPage = () => { useRouteGuard(Permission.ADMIN); diff --git a/src/pages/setup.tsx b/src/pages/setup.tsx index 5f255e2b..09c8e695 100644 --- a/src/pages/setup.tsx +++ b/src/pages/setup.tsx @@ -1,5 +1,5 @@ +import Setup from '@app/components/Setup'; import type { NextPage } from 'next'; -import Setup from '../components/Setup'; const SetupPage: NextPage = () => { return ; diff --git a/src/pages/tv/[tvId]/cast.tsx b/src/pages/tv/[tvId]/cast.tsx index 3843b512..91df3531 100644 --- a/src/pages/tv/[tvId]/cast.tsx +++ b/src/pages/tv/[tvId]/cast.tsx @@ -1,5 +1,5 @@ +import TvCast from '@app/components/TvDetails/TvCast'; import type { NextPage } from 'next'; -import TvCast from '../../../components/TvDetails/TvCast'; const TvCastPage: NextPage = () => { return ; diff --git a/src/pages/tv/[tvId]/crew.tsx b/src/pages/tv/[tvId]/crew.tsx index 23f8b926..aee6a473 100644 --- a/src/pages/tv/[tvId]/crew.tsx +++ b/src/pages/tv/[tvId]/crew.tsx @@ -1,5 +1,5 @@ +import TvCrew from '@app/components/TvDetails/TvCrew'; import type { NextPage } from 'next'; -import TvCrew from '../../../components/TvDetails/TvCrew'; const TvCrewPage: NextPage = () => { return ; diff --git a/src/pages/tv/[tvId]/index.tsx b/src/pages/tv/[tvId]/index.tsx index ef89825b..69fe216f 100644 --- a/src/pages/tv/[tvId]/index.tsx +++ b/src/pages/tv/[tvId]/index.tsx @@ -1,7 +1,7 @@ +import TvDetails from '@app/components/TvDetails'; +import type { TvDetails as TvDetailsType } from '@server/models/Tv'; import axios from 'axios'; import type { NextPage } from 'next'; -import type { TvDetails as TvDetailsType } from '../../../../server/models/Tv'; -import TvDetails from '../../../components/TvDetails'; interface TvPageProps { tv?: TvDetailsType; diff --git a/src/pages/tv/[tvId]/recommendations.tsx b/src/pages/tv/[tvId]/recommendations.tsx index e83e87e9..0c6d9c81 100644 --- a/src/pages/tv/[tvId]/recommendations.tsx +++ b/src/pages/tv/[tvId]/recommendations.tsx @@ -1,5 +1,5 @@ +import TvRecommendations from '@app/components/TvDetails/TvRecommendations'; import type { NextPage } from 'next'; -import TvRecommendations from '../../../components/TvDetails/TvRecommendations'; const TvRecommendationsPage: NextPage = () => { return ; diff --git a/src/pages/tv/[tvId]/similar.tsx b/src/pages/tv/[tvId]/similar.tsx index 17b66fd1..b5179315 100644 --- a/src/pages/tv/[tvId]/similar.tsx +++ b/src/pages/tv/[tvId]/similar.tsx @@ -1,5 +1,5 @@ +import TvSimilar from '@app/components/TvDetails/TvSimilar'; import type { NextPage } from 'next'; -import TvSimilar from '../../../components/TvDetails/TvSimilar'; const TvSimilarPage: NextPage = () => { return ; diff --git a/src/pages/users/[userId]/index.tsx b/src/pages/users/[userId]/index.tsx index 740727e0..0aa8c9f3 100644 --- a/src/pages/users/[userId]/index.tsx +++ b/src/pages/users/[userId]/index.tsx @@ -1,5 +1,5 @@ +import UserProfile from '@app/components/UserProfile'; import type { NextPage } from 'next'; -import UserProfile from '../../../components/UserProfile'; const UserPage: NextPage = () => { return ; diff --git a/src/pages/users/[userId]/requests.tsx b/src/pages/users/[userId]/requests.tsx index 2a4e3c30..f17968bf 100644 --- a/src/pages/users/[userId]/requests.tsx +++ b/src/pages/users/[userId]/requests.tsx @@ -1,7 +1,7 @@ +import RequestList from '@app/components/RequestList'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import RequestList from '../../../components/RequestList'; -import useRouteGuard from '../../../hooks/useRouteGuard'; -import { Permission } from '../../../hooks/useUser'; const UserRequestsPage: NextPage = () => { useRouteGuard([Permission.MANAGE_REQUESTS, Permission.REQUEST_VIEW], { diff --git a/src/pages/users/[userId]/settings/index.tsx b/src/pages/users/[userId]/settings/index.tsx index 67e70cba..b8886b01 100644 --- a/src/pages/users/[userId]/settings/index.tsx +++ b/src/pages/users/[userId]/settings/index.tsx @@ -1,8 +1,8 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserGeneralSettings from '@app/components/UserProfile/UserSettings/UserGeneralSettings'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserGeneralSettings from '../../../../components/UserProfile/UserSettings/UserGeneralSettings'; -import useRouteGuard from '../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../hooks/useUser'; const UserSettingsPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/main.tsx b/src/pages/users/[userId]/settings/main.tsx index 40d2f9cb..58b05405 100644 --- a/src/pages/users/[userId]/settings/main.tsx +++ b/src/pages/users/[userId]/settings/main.tsx @@ -1,8 +1,8 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserGeneralSettings from '@app/components/UserProfile/UserSettings/UserGeneralSettings'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserGeneralSettings from '../../../../components/UserProfile/UserSettings/UserGeneralSettings'; -import useRouteGuard from '../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../hooks/useUser'; const UserSettingsMainPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/notifications/discord.tsx b/src/pages/users/[userId]/settings/notifications/discord.tsx index d051f006..727d542e 100644 --- a/src/pages/users/[userId]/settings/notifications/discord.tsx +++ b/src/pages/users/[userId]/settings/notifications/discord.tsx @@ -1,9 +1,9 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsDiscord from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsDiscord'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsDiscord from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsDiscord'; -import useRouteGuard from '../../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/notifications/email.tsx b/src/pages/users/[userId]/settings/notifications/email.tsx index 15eb8681..8634c55e 100644 --- a/src/pages/users/[userId]/settings/notifications/email.tsx +++ b/src/pages/users/[userId]/settings/notifications/email.tsx @@ -1,9 +1,9 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsEmail from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsEmail from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail'; -import useRouteGuard from '../../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/notifications/pushbullet.tsx b/src/pages/users/[userId]/settings/notifications/pushbullet.tsx index 62856285..210a47e4 100644 --- a/src/pages/users/[userId]/settings/notifications/pushbullet.tsx +++ b/src/pages/users/[userId]/settings/notifications/pushbullet.tsx @@ -1,9 +1,9 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsPushbullet from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushbullet'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsPushbullet from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushbullet'; -import useRouteGuard from '../../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/notifications/pushover.tsx b/src/pages/users/[userId]/settings/notifications/pushover.tsx index 84231060..3f747e03 100644 --- a/src/pages/users/[userId]/settings/notifications/pushover.tsx +++ b/src/pages/users/[userId]/settings/notifications/pushover.tsx @@ -1,9 +1,9 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsPushover from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushover'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsPushover from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsPushover'; -import useRouteGuard from '../../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/notifications/telegram.tsx b/src/pages/users/[userId]/settings/notifications/telegram.tsx index f81cebc0..62572b36 100644 --- a/src/pages/users/[userId]/settings/notifications/telegram.tsx +++ b/src/pages/users/[userId]/settings/notifications/telegram.tsx @@ -1,9 +1,9 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserNotificationsTelegram from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsTelegram'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserNotificationsTelegram from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsTelegram'; -import useRouteGuard from '../../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../../hooks/useUser'; const NotificationsPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/notifications/webpush.tsx b/src/pages/users/[userId]/settings/notifications/webpush.tsx index 22b0cc5b..cb9d27a4 100644 --- a/src/pages/users/[userId]/settings/notifications/webpush.tsx +++ b/src/pages/users/[userId]/settings/notifications/webpush.tsx @@ -1,9 +1,9 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserNotificationSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings'; +import UserWebPushSettings from '@app/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsWebPush'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../../components/UserProfile/UserSettings'; -import UserNotificationSettings from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings'; -import UserWebPushSettings from '../../../../../components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsWebPush'; -import useRouteGuard from '../../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../../hooks/useUser'; const WebPushNotificationsPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/password.tsx b/src/pages/users/[userId]/settings/password.tsx index 7021ac49..f9c9c105 100644 --- a/src/pages/users/[userId]/settings/password.tsx +++ b/src/pages/users/[userId]/settings/password.tsx @@ -1,8 +1,8 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserPasswordChange from '@app/components/UserProfile/UserSettings/UserPasswordChange'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserPasswordChange from '../../../../components/UserProfile/UserSettings/UserPasswordChange'; -import useRouteGuard from '../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../hooks/useUser'; const UserPassswordPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/[userId]/settings/permissions.tsx b/src/pages/users/[userId]/settings/permissions.tsx index 4161cd1c..23b218a4 100644 --- a/src/pages/users/[userId]/settings/permissions.tsx +++ b/src/pages/users/[userId]/settings/permissions.tsx @@ -1,8 +1,8 @@ +import UserSettings from '@app/components/UserProfile/UserSettings'; +import UserPermissions from '@app/components/UserProfile/UserSettings/UserPermissions'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserSettings from '../../../../components/UserProfile/UserSettings'; -import UserPermissions from '../../../../components/UserProfile/UserSettings/UserPermissions'; -import useRouteGuard from '../../../../hooks/useRouteGuard'; -import { Permission } from '../../../../hooks/useUser'; const UserPermissionsPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/pages/users/index.tsx b/src/pages/users/index.tsx index dd46b55c..53310504 100644 --- a/src/pages/users/index.tsx +++ b/src/pages/users/index.tsx @@ -1,7 +1,7 @@ +import UserList from '@app/components/UserList'; +import useRouteGuard from '@app/hooks/useRouteGuard'; +import { Permission } from '@app/hooks/useUser'; import type { NextPage } from 'next'; -import UserList from '../../components/UserList'; -import useRouteGuard from '../../hooks/useRouteGuard'; -import { Permission } from '../../hooks/useUser'; const UsersPage: NextPage = () => { useRouteGuard(Permission.MANAGE_USERS); diff --git a/src/utils/creditHelpers.ts b/src/utils/creditHelpers.ts index a077a07e..7bbe9206 100644 --- a/src/utils/creditHelpers.ts +++ b/src/utils/creditHelpers.ts @@ -1,4 +1,4 @@ -import type { Crew } from '../../server/models/common'; +import type { Crew } from '@server/models/common'; const priorityJobs = [ 'Director', 'Creator', diff --git a/tsconfig.json b/tsconfig.json index 41611f7d..5edcfbfe 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,7 +17,12 @@ "experimentalDecorators": true, "emitDecoratorMetadata": true, "useUnknownInCatchVariables": false, - "incremental": true + "incremental": true, + "baseUrl": "src", + "paths": { + "@server/*": ["../server/*"], + "@app/*": ["*"] + } }, "include": ["next-env.d.ts", "src/**/*.ts", "src/**/*.tsx"], "exclude": ["node_modules"] diff --git a/yarn.lock b/yarn.lock index 262c29f1..e0f74aaa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4515,6 +4515,11 @@ commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^9.0.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" + integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== + commander@^9.3.0: version "9.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.3.0.tgz#f619114a5a2d2054e0d9ff1b31d5ccf89255e26b" @@ -5690,6 +5695,11 @@ eslint-plugin-jsx-a11y@^6.5.1: language-tags "^1.0.5" minimatch "^3.0.4" +eslint-plugin-no-relative-import-paths@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-no-relative-import-paths/-/eslint-plugin-no-relative-import-paths-1.4.0.tgz#59489ebc19688d1398bfe53d3ad320b3ed42ca17" + integrity sha512-J/ok26KqJM+20VsxNEcHc9kyW0dcFHBlihOO5FFv/GQqwcW+G1UngbHLpnPAdOQ1dJg5Ljk/40csqfZ3mnneUw== + eslint-plugin-prettier@4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" @@ -6610,7 +6620,7 @@ globals@^13.15.0: dependencies: type-fest "^0.20.2" -globby@^11.0.0, globby@^11.0.1, globby@^11.1.0: +globby@^11.0.0, globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -8854,6 +8864,11 @@ mute-stream@0.0.8, mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mylas@^2.1.9: + version "2.1.11" + resolved "https://registry.yarnpkg.com/mylas/-/mylas-2.1.11.tgz#1827462533977bed1c4251317aa84254e3ca94c7" + integrity sha512-krnPUl3n9/k52FGCltWMYcqp9SttxjRJEy0sWLk+g7mIa7wnZrmNSZ40Acx7ghzRSOsxt2rEqMbaq4jWlnTDKg== + mz@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -9819,6 +9834,13 @@ plex-api@5.3.2: uuid "^3.0.0" xml2js "0.4.16" +plimit-lit@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/plimit-lit/-/plimit-lit-1.3.0.tgz#46908adbfcfc010e65a5a737652768b0fec21587" + integrity sha512-63qOoSzggsjBHPVbaKeEtsO8oWTeyJxUfVRLkoc59pRkDiCCLvqn2tCgAkfbejrx+V5zJtlG2wqkk/Db6cwlVQ== + dependencies: + queue-lit "^1.3.0" + postcss-import@^14.1.0: version "14.1.0" resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" @@ -10153,6 +10175,11 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +queue-lit@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/queue-lit/-/queue-lit-1.3.0.tgz#a29e4cfd0d0e2c6594beb70a4726716a57ffce5b" + integrity sha512-3HpQ7bD2ct56qPithPr5IzH2Oij3WVPcgevCJ+mI9HAfVJKCqQ2yiFYgb4AUkLfsCmmbVDy9luvE97Ztzr5eBg== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -11828,6 +11855,18 @@ ts-node@^10.8.0: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +tsc-alias@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/tsc-alias/-/tsc-alias-1.7.0.tgz#733482751133a25b97608ee424f8a1f085fcaaef" + integrity sha512-n/K6g8S7Ec7Y/A2Z77Ikp2Uv1S1ERtT63ni69XV4W1YPT4rnNmz8ItgIiJYvKfFnKfqcZQ81UPjoKpMTxaC/rg== + dependencies: + chokidar "^3.5.3" + commander "^9.0.0" + globby "^11.0.4" + mylas "^2.1.9" + normalize-path "^3.0.0" + plimit-lit "^1.2.6" + tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" @@ -11838,6 +11877,15 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz#f8ef7d467f08ae3a695335bf1ece088c5538d2c1" + integrity sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow== + dependencies: + json5 "^2.2.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@2.4.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"