feat(servarr-api): make Servarr API request timeout configurable (#2556)
This commit is contained in:
@@ -56,6 +56,10 @@ const messages = defineMessages('components.Settings.SettingsNetwork', {
|
||||
'Do NOT enable this if you are experiencing issues with DNS lookups',
|
||||
dnsCacheForceMinTtl: 'DNS Cache Minimum TTL',
|
||||
dnsCacheForceMaxTtl: 'DNS Cache Maximum TTL',
|
||||
apiRequestTimeout: 'API Request Timeout',
|
||||
apiRequestTimeoutTip:
|
||||
'Maximum time (in seconds) to wait for responses from external services like Radarr/Sonarr. Set to 0 for no timeout.',
|
||||
validationApiRequestTimeout: 'You must provide a valid timeout value',
|
||||
});
|
||||
|
||||
const SettingsNetwork = () => {
|
||||
@@ -91,6 +95,10 @@ const SettingsNetwork = () => {
|
||||
.max(65535, intl.formatMessage(messages.validationProxyPort))
|
||||
.required(intl.formatMessage(messages.validationProxyPort)),
|
||||
}),
|
||||
apiRequestTimeout: Yup.number()
|
||||
.typeError(intl.formatMessage(messages.validationApiRequestTimeout))
|
||||
.required(intl.formatMessage(messages.validationApiRequestTimeout))
|
||||
.min(0, intl.formatMessage(messages.validationApiRequestTimeout)),
|
||||
});
|
||||
|
||||
if (!data && !error) {
|
||||
@@ -130,6 +138,10 @@ const SettingsNetwork = () => {
|
||||
proxyPassword: data?.proxy?.password,
|
||||
proxyBypassFilter: data?.proxy?.bypassFilter,
|
||||
proxyBypassLocalAddresses: data?.proxy?.bypassLocalAddresses,
|
||||
apiRequestTimeout:
|
||||
data?.apiRequestTimeout !== undefined
|
||||
? data.apiRequestTimeout / 1000
|
||||
: 10,
|
||||
}}
|
||||
enableReinitialize
|
||||
validationSchema={NetworkSettingsSchema}
|
||||
@@ -154,6 +166,7 @@ const SettingsNetwork = () => {
|
||||
bypassFilter: values.proxyBypassFilter,
|
||||
bypassLocalAddresses: values.proxyBypassLocalAddresses,
|
||||
},
|
||||
apiRequestTimeout: Number(values.apiRequestTimeout) * 1000,
|
||||
});
|
||||
mutate('/api/v1/settings/public');
|
||||
mutate('/api/v1/status');
|
||||
@@ -341,6 +354,31 @@ const SettingsNetwork = () => {
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
<div className="form-row">
|
||||
<label htmlFor="apiRequestTimeout" className="text-label">
|
||||
<span className="mr-2">
|
||||
{intl.formatMessage(messages.apiRequestTimeout)}
|
||||
</span>
|
||||
<SettingsBadge badgeType="restartRequired" />
|
||||
<span className="label-tip">
|
||||
{intl.formatMessage(messages.apiRequestTimeoutTip)}
|
||||
</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<Field
|
||||
id="apiRequestTimeout"
|
||||
name="apiRequestTimeout"
|
||||
type="text"
|
||||
inputMode="numeric"
|
||||
className="short"
|
||||
/>
|
||||
</div>
|
||||
{errors.apiRequestTimeout &&
|
||||
touched.apiRequestTimeout &&
|
||||
typeof errors.apiRequestTimeout === 'string' && (
|
||||
<div className="error">{errors.apiRequestTimeout}</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="proxyEnabled" className="checkbox-label">
|
||||
<span className="mr-2">
|
||||
|
||||
@@ -997,6 +997,8 @@
|
||||
"components.Settings.SettingsMain.validationUrlTrailingSlash": "URL must not end in a trailing slash",
|
||||
"components.Settings.SettingsMain.youtubeUrl": "YouTube URL",
|
||||
"components.Settings.SettingsMain.youtubeUrlTip": "Base URL for YouTube videos if a self-hosted YouTube instance is used.",
|
||||
"components.Settings.SettingsNetwork.apiRequestTimeout": "API Request Timeout",
|
||||
"components.Settings.SettingsNetwork.apiRequestTimeoutTip": "Maximum time (in seconds) to wait for responses from external services like Radarr/Sonarr. Set to 0 for no timeout.",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "Enable CSRF Protection",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "Do NOT enable this setting unless you understand what you are doing!",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Set external API access to read-only (requires HTTPS)",
|
||||
@@ -1026,6 +1028,7 @@
|
||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Settings saved successfully!",
|
||||
"components.Settings.SettingsNetwork.trustProxy": "Enable Proxy Support",
|
||||
"components.Settings.SettingsNetwork.trustProxyTip": "Allow Seerr to correctly register client IP addresses behind a proxy",
|
||||
"components.Settings.SettingsNetwork.validationApiRequestTimeout": "You must provide a valid timeout value",
|
||||
"components.Settings.SettingsNetwork.validationDnsCacheMaxTtl": "You must provide a valid maximum TTL",
|
||||
"components.Settings.SettingsNetwork.validationDnsCacheMinTtl": "You must provide a valid minimum TTL",
|
||||
"components.Settings.SettingsNetwork.validationProxyPort": "You must provide a valid port",
|
||||
|
||||
Reference in New Issue
Block a user