fix: resolve review comments

This commit is contained in:
gauthier-th
2025-04-06 12:39:06 +02:00
committed by Gauthier
parent f6b0147049
commit 6315ba5246
15 changed files with 24 additions and 81 deletions

View File

@@ -97,37 +97,7 @@ You can try them all and see which one works for your network.
</TabItem>
</Tabs>
### Option 2: Force IPV4 resolution first
Sometimes there are configuration issues with IPV6 that prevent the hostname resolution from working correctly.
You can try to force the resolution to use IPV4 first by going to `Settings > Networking > Advanced Networking` and enabling `Force IPv4 Resolution First` setting and restarting. You can also add the environment variable, `FORCE_IPV4_FIRST=true`:
<Tabs groupId="methods" queryString>
<TabItem value="docker-cli" label="Docker CLI">
Add the following to your `docker run` command:
```bash
-e "FORCE_IPV4_FIRST=true"
```
</TabItem>
<TabItem value="docker-compose" label="Docker Compose">
Add the following to your `compose.yaml`:
```yaml
---
services:
jellyseerr:
environment:
- FORCE_IPV4_FIRST=true
```
</TabItem>
</Tabs>
### Option 3: Use Jellyseerr through a proxy
### Option 2: Use Jellyseerr through a proxy
If you can't change your DNS servers or force IPV4 resolution, you can use Jellyseerr through a proxy.

View File

@@ -164,9 +164,10 @@ class AnimeListMapping {
const response = await axios.get(MAPPING_URL, {
responseType: 'stream',
});
await new Promise<void>((resolve) => {
await new Promise<void>((resolve, reject) => {
const writer = fs.createWriteStream(LOCAL_PATH);
writer.on('finish', resolve);
writer.on('error', reject);
response.data.pipe(writer);
});
} catch (e) {

View File

@@ -163,7 +163,7 @@ class JellyfinAPI extends ExternalAPI {
} catch (e) {
logger.debug('Failed to authenticate with headers', {
label: 'Jellyfin API',
error: e.response?.status,
error: e.response?.statusText,
ip: ClientIP,
});

View File

@@ -206,7 +206,7 @@ class SonarrAPI extends ServarrBase<{
});
logger.debug('Sonarr update details', {
label: 'Sonarr',
movie: newSeriesResponse.data,
series: newSeriesResponse.data,
});
if (options.searchNow) {
@@ -254,7 +254,7 @@ class SonarrAPI extends ServarrBase<{
logger.info('Sonarr accepted request', { label: 'Sonarr' });
logger.debug('Sonarr add details', {
label: 'Sonarr',
movie: createdSeriesResponse.data,
series: createdSeriesResponse.data,
});
} else {
logger.error('Failed to add movie to Sonarr', {

View File

@@ -180,6 +180,7 @@ class TelegramAgent
await axios.post(endpoint, {
...notificationPayload,
chat_id: settings.options.chatId,
message_thread_id: settings.options.messageThreadId,
disable_notification: !!settings.options.sendSilently,
} as TelegramMessagePayload | TelegramPhotoPayload);
} catch (e) {
@@ -215,6 +216,8 @@ class TelegramAgent
await axios.post(endpoint, {
...notificationPayload,
chat_id: payload.notifyUser.settings.telegramChatId,
message_thread_id:
payload.notifyUser.settings.telegramMessageThreadId,
disable_notification:
!!payload.notifyUser.settings.telegramSendSilently,
} as TelegramMessagePayload | TelegramPhotoPayload);
@@ -262,6 +265,7 @@ class TelegramAgent
await axios.post(endpoint, {
...notificationPayload,
chat_id: user.settings.telegramChatId,
message_thread_id: user.settings.telegramMessageThreadId,
disable_notification: !!user.settings?.telegramSendSilently,
} as TelegramMessagePayload | TelegramPhotoPayload);
} catch (e) {

View File

@@ -11,7 +11,7 @@ import useDeepLinks from '@app/hooks/useDeepLinks';
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 ErrorPage from '@app/pages/_error';
import defineMessages from '@app/utils/defineMessages';
import { Transition } from '@headlessui/react';
import {
@@ -113,7 +113,7 @@ const IssueDetails = () => {
}
if (!data || !issueData) {
return <Error statusCode={404} />;
return <ErrorPage statusCode={404} />;
}
const belongsToUser = issueData.createdBy.id === currentUser?.id;

View File

@@ -39,7 +39,6 @@ const messages = defineMessages('components.Settings.SettingsNetwork', {
"Use ',' as a separator, and '*.' as a wildcard for subdomains",
proxyBypassLocalAddresses: 'Bypass Proxy for Local Addresses',
validationProxyPort: 'You must provide a valid port',
advancedNetworkSettings: 'Advanced Network Settings',
networkDisclaimer:
'Network parameters from your container/system should be used instead of these settings. See the {docs} for more information.',
docs: 'documentation',
@@ -370,23 +369,6 @@ const SettingsNetwork = () => {
</div>
</>
)}
<h3 className="heading mt-10">
{intl.formatMessage(messages.advancedNetworkSettings)}
</h3>
<p className="description">
{intl.formatMessage(messages.networkDisclaimer, {
docs: (
<a
href="https://docs.jellyseerr.dev/troubleshooting"
target="_blank"
rel="noreferrer"
className="text-white"
>
{intl.formatMessage(messages.docs)}
</a>
),
})}
</p>
<div className="actions">
<div className="flex justify-end">
<span className="ml-3 inline-flex rounded-md shadow-sm">

View File

@@ -113,11 +113,6 @@ function JellyfinSetup({
validationSchema={LoginSchema}
onSubmit={async (values) => {
try {
// Check if serverType is either 'Jellyfin' or 'Emby'
// if (serverType !== 'Jellyfin' && serverType !== 'Emby') {
// throw new Error('Invalid serverType'); // You can customize the error message
// }
await axios.post('/api/v1/auth/jellyfin', {
username: values.username,
password: values.password,

View File

@@ -21,7 +21,7 @@ const messages = defineMessages('components.TitleCard', {
cleardata: 'Clear Data',
});
const Error = ({ id, tmdbId, tvdbId, type, canExpand }: ErrorCardProps) => {
const ErrorCard = ({ id, tmdbId, tvdbId, type, canExpand }: ErrorCardProps) => {
const intl = useIntl();
const deleteMedia = async () => {
@@ -129,4 +129,4 @@ const Error = ({ id, tmdbId, tvdbId, type, canExpand }: ErrorCardProps) => {
</div>
);
};
export default Error;
export default ErrorCard;

View File

@@ -382,9 +382,7 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
setIsUpdating(true);
try {
await axios.delete('/api/v1/watchlist/' + tv?.id, {
method: 'DELETE',
});
await axios.delete('/api/v1/watchlist/' + tv?.id);
addToast(
<span>

View File

@@ -11,7 +11,7 @@ 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 ErrorPage from '@app/pages/_error';
import defineMessages from '@app/utils/defineMessages';
import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import { ApiErrorCode } from '@server/constants/error';
@@ -129,7 +129,7 @@ const UserGeneralSettings = () => {
}
if (!data) {
return <Error statusCode={500} />;
return <ErrorPage statusCode={500} />;
}
return (

View File

@@ -84,14 +84,8 @@ const LinkJellyfinModal: React.FC<LinkJellyfinModalProps> = ({
await axios.post(
`/api/v1/user/${user?.id}/settings/linked-accounts/jellyfin`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
username,
password,
}),
username,
password,
}
);
onSave();

View File

@@ -141,8 +141,7 @@ const UserLinkedAccountsSettings = () => {
const deleteRequest = async (account: string) => {
try {
await axios.delete(
`/api/v1/user/${user?.id}/settings/linked-accounts/${account}`,
{ method: 'DELETE' }
`/api/v1/user/${user?.id}/settings/linked-accounts/${account}`
);
} catch {
setError(intl.formatMessage(messages.deleteFailed));

View File

@@ -5,7 +5,7 @@ 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 ErrorPage from '@app/pages/_error';
import defineMessages from '@app/utils/defineMessages';
import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import axios from 'axios';
@@ -80,7 +80,7 @@ const UserPasswordChange = () => {
}
if (!data) {
return <Error statusCode={500} />;
return <ErrorPage statusCode={500} />;
}
if (

View File

@@ -5,7 +5,7 @@ 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 ErrorPage from '@app/pages/_error';
import defineMessages from '@app/utils/defineMessages';
import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
import axios from 'axios';
@@ -46,7 +46,7 @@ const UserPermissions = () => {
}
if (!data) {
return <Error statusCode={500} />;
return <ErrorPage statusCode={500} />;
}
if (currentUser?.id !== 1 && currentUser?.id === user?.id) {