From 9d61092f37553a0764f9e6e58e23b75b93c36133 Mon Sep 17 00:00:00 2001 From: Aiden Vigue Date: Mon, 15 Feb 2021 15:44:50 -0500 Subject: [PATCH] feat(rebase): rebase --- overseerr-api.yml | 2 +- server/routes/auth.ts | 11 +++- server/routes/settings/index.ts | 2 - src/components/MovieDetails/index.tsx | 6 +- src/components/Setup/SetupLogin.tsx | 95 +++++++++++++++++---------- src/i18n/locale/en.json | 1 + yarn.lock | 5 ++ 7 files changed, 78 insertions(+), 44 deletions(-) diff --git a/overseerr-api.yml b/overseerr-api.yml index 0667dcbd7..8c2466fa9 100644 --- a/overseerr-api.yml +++ b/overseerr-api.yml @@ -129,7 +129,7 @@ components: example: true mediaServerType: type: number - example: 'PLEX | JELLYFIN' + example: 1 defaultPermissions: type: number example: 32 diff --git a/server/routes/auth.ts b/server/routes/auth.ts index fd02b154d..71218c9ef 100644 --- a/server/routes/auth.ts +++ b/server/routes/auth.ts @@ -197,7 +197,11 @@ authRoutes.post('/jellyfin', async (req, res, next) => { } // Update the users avatar with their jellyfin profile pic (incase it changed) - user.avatar = `${hostname}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90`; + if (typeof account.User.PrimaryImageTag !== undefined) { + user.avatar = `${hostname}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90`; + } else { + user.avatar = '/images/os_logo_square.png'; + } user.email = account.User.Name; user.jellyfinUsername = account.User.Name; @@ -217,7 +221,10 @@ authRoutes.post('/jellyfin', async (req, res, next) => { jellyfinId: account.User.Id, jellyfinAuthToken: account.AccessToken, permissions: Permission.ADMIN, - avatar: `${hostname}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90`, + avatar: + typeof account.User.PrimaryImageTag !== undefined + ? `${hostname}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90` + : '/images/os_logo_square.png', userType: UserType.JELLYFIN, }); await userRepository.save(user); diff --git a/server/routes/settings/index.ts b/server/routes/settings/index.ts index b48162b77..e50d38c90 100644 --- a/server/routes/settings/index.ts +++ b/server/routes/settings/index.ts @@ -260,8 +260,6 @@ settingsRoutes.get('/jellyfin/library', async (req, res) => { const newLibraries: Library[] = libraries // Remove libraries that are not movie or show .filter((library) => library.type === 'movie' || library.type === 'show') - // Remove libraries that do not have a metadata agent set (usually personal video libraries) - .filter((library) => library.agent !== 'com.plexapp.agents.none') .map((library) => { const existing = settings.plex.libraries.find( (l) => l.id === library.key && l.name === library.title diff --git a/src/components/MovieDetails/index.tsx b/src/components/MovieDetails/index.tsx index 2aac60902..0548f5b08 100644 --- a/src/components/MovieDetails/index.tsx +++ b/src/components/MovieDetails/index.tsx @@ -490,7 +490,7 @@ const MovieDetails: React.FC = ({ movie }) => { settings.currentSettings.mediaServerType === MediaServerType.PLEX ? 'Plex' - : settings.currentSettings.jellyfinServerName, + : 'Jellyfin', }) : data.mediaInfo?.mediaUrl4k && (hasPermission(Permission.REQUEST_4K) || @@ -500,7 +500,7 @@ const MovieDetails: React.FC = ({ movie }) => { settings.currentSettings.mediaServerType === MediaServerType.PLEX ? 'Plex' - : settings.currentSettings.jellyfinServerName, + : 'Jellyfin', }) : intl.formatMessage(messages.watchtrailer)} @@ -543,7 +543,7 @@ const MovieDetails: React.FC = ({ movie }) => { settings.currentSettings.mediaServerType === MediaServerType.PLEX ? 'Plex' - : settings.currentSettings.jellyfinServerName, + : 'Jellyfin', })} )} diff --git a/src/components/Setup/SetupLogin.tsx b/src/components/Setup/SetupLogin.tsx index 57703691e..5566a6eec 100644 --- a/src/components/Setup/SetupLogin.tsx +++ b/src/components/Setup/SetupLogin.tsx @@ -4,12 +4,14 @@ import PlexLoginButton from '../PlexLoginButton'; import JellyfinLogin from '../Login/JellyfinLogin'; import axios from 'axios'; import { defineMessages, FormattedMessage } from 'react-intl'; -import LoadingSpinner from '../Common/LoadingSpinner'; +import Accordion from '../Common/Accordion'; +import { MediaServerType } from '../../../server/constants/server'; const messages = defineMessages({ welcome: 'Welcome to Overseerr', - signinMessage: 'Get started by logging in with an account', - signinWithJellyfin: 'Use Jellyfin', + signinMessage: 'Get started by signing in', + signinWithJellyfin: 'Use your Jellyfin account', + signinWithPlex: 'Use your Plex account', }); interface LoginWithMediaServerProps { @@ -18,7 +20,9 @@ interface LoginWithMediaServerProps { const SetupLogin: React.FC = ({ onComplete }) => { const [authToken, setAuthToken] = useState(undefined); - const [mediaServerType, setMediaServerType] = useState(''); + const [mediaServerType, setMediaServerType] = useState( + MediaServerType.NOT_CONFIGURED + ); const { user, revalidate } = useUser(); // Effect that is triggered when the `authToken` comes back from the Plex OAuth @@ -35,7 +39,7 @@ const SetupLogin: React.FC = ({ onComplete }) => { revalidate(); } }; - if (authToken && mediaServerType == 'PLEX') { + if (authToken && mediaServerType == MediaServerType.PLEX) { login(); } }, [authToken, mediaServerType, revalidate]); @@ -48,40 +52,59 @@ const SetupLogin: React.FC = ({ onComplete }) => { return (
- {mediaServerType == '' ? ( - -
- -
-
- -
-
- { - setMediaServerType('PLEX'); - setAuthToken(authToken); - }} - /> -
-
- +
+ +
+
+ +
+ + {({ openIndexes, handleClick, AccordionContent }) => ( + <> -
-
- ) : mediaServerType == 'JELLYFIN' ? ( - - ) : ( - - )} + +
+ { + setMediaServerType(MediaServerType.PLEX); + setAuthToken(authToken); + }} + /> +
+
+
+ + +
+ +
+
+
+ + )} +
); }; diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index 625d7def7..db5a1839a 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -599,6 +599,7 @@ "components.Setup.signin": "Sign In", "components.Setup.signinMessage": "Get started by signing in", "components.Setup.signinWithJellyfin": "Use Jellyfin", + "components.Setup.signinWithPlex": "Sign in with Plex", "components.Setup.syncingbackground": "Syncing will run in the background. You can continue the setup process in the meantime.", "components.Setup.tip": "Tip", "components.Setup.welcome": "Welcome to Overseerr", diff --git a/yarn.lock b/yarn.lock index 831be4156..ab3ef423d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6098,6 +6098,11 @@ express-openapi-validator@^4.11.0: ono "^7.1.3" path-to-regexp "^6.2.0" +express-rate-limit@^5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-5.2.5.tgz#956fde02aaf28724c0fd01b932986baa35143ece" + integrity sha512-fv9mf4hWRKZHVlY8ChVNYnGxa49m0zQ6CrJxNiXe2IjJPqicrqoA/JOyBbvs4ufSSLZ6NTzhtgEyLcdfbe+Q6Q== + express-session@^1.15.6, express-session@^1.17.1: version "1.17.1" resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.1.tgz#36ecbc7034566d38c8509885c044d461c11bf357"