Feature/settings add flaresolverr (#568)
* [Codegen] Update to server changes * Set "dialogTitle" by default to "settingTitle" for "NumberSetting" * Add FlareSolverr to settings * [VersionMapping] Require server version "r1477" for preview * Replace static strings with translation keys
This commit is contained in:
@@ -281,8 +281,7 @@ export function Backup() {
|
||||
minValue={1}
|
||||
maxValue={31}
|
||||
stepSize={1}
|
||||
dialogTitle="Interval"
|
||||
valueUnit="Day"
|
||||
valueUnit={t('global.date.label.day')}
|
||||
showSlider
|
||||
handleUpdate={(interval: number) => updateSetting('backupInterval', interval)}
|
||||
/>
|
||||
@@ -294,8 +293,7 @@ export function Backup() {
|
||||
minValue={0}
|
||||
maxValue={1000}
|
||||
stepSize={1}
|
||||
dialogTitle="Cleanup"
|
||||
valueUnit="Day"
|
||||
valueUnit={t('global.date.label.day')}
|
||||
showSlider
|
||||
handleUpdate={(ttl: number) => updateSetting('backupTTL', ttl)}
|
||||
/>
|
||||
|
||||
@@ -74,7 +74,6 @@ export const ExtensionSettings = () => {
|
||||
maxValue={20}
|
||||
showSlider
|
||||
stepSize={1}
|
||||
dialogTitle={t('settings.server.requests.sources.parallel.label.title')}
|
||||
handleUpdate={(parallelSources) => updateSetting('maxSourcesInParallel', parallelSources)}
|
||||
/>
|
||||
<MutableListSetting
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation, Trans } from 'react-i18next';
|
||||
import { useContext, useEffect } from 'react';
|
||||
import { List, ListItem, ListItemText, Switch } from '@mui/material';
|
||||
import { Link, List, ListItem, ListItemText, Switch } from '@mui/material';
|
||||
import ListSubheader from '@mui/material/ListSubheader';
|
||||
import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext.tsx';
|
||||
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
||||
@@ -30,6 +30,11 @@ type ServerSettingsType = Pick<
|
||||
| 'basicAuthEnabled'
|
||||
| 'basicAuthUsername'
|
||||
| 'basicAuthPassword'
|
||||
| 'flareSolverrEnabled'
|
||||
| 'flareSolverrTimeout'
|
||||
| 'flareSolverrUrl'
|
||||
| 'flareSolverrSessionName'
|
||||
| 'flareSolverrSessionTtl'
|
||||
>;
|
||||
|
||||
const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType => ({
|
||||
@@ -44,6 +49,11 @@ const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType
|
||||
basicAuthEnabled: settings.basicAuthEnabled,
|
||||
basicAuthUsername: settings.basicAuthUsername,
|
||||
basicAuthPassword: settings.basicAuthPassword,
|
||||
flareSolverrEnabled: settings.flareSolverrEnabled,
|
||||
flareSolverrTimeout: settings.flareSolverrTimeout,
|
||||
flareSolverrUrl: settings.flareSolverrUrl,
|
||||
flareSolverrSessionName: settings.flareSolverrSessionName,
|
||||
flareSolverrSessionTtl: settings.flareSolverrSessionTtl,
|
||||
});
|
||||
|
||||
export const ServerSettings = () => {
|
||||
@@ -113,7 +123,6 @@ export const ServerSettings = () => {
|
||||
<NumberSetting
|
||||
settingTitle={t('settings.server.address.server.label.port')}
|
||||
settingValue={serverSettings?.port.toString()}
|
||||
dialogTitle={t('settings.server.address.server.label.port')}
|
||||
handleUpdate={(port) => updateSetting('port', port)}
|
||||
value={serverSettings?.port ?? 4567}
|
||||
defaultValue={4567}
|
||||
@@ -177,6 +186,82 @@ export const ServerSettings = () => {
|
||||
disabled={!serverSettings?.basicAuthEnabled}
|
||||
/>
|
||||
</List>
|
||||
<List
|
||||
subheader={
|
||||
<ListSubheader component="div" id="server-settings-clouadflare-bypass">
|
||||
{t('settings.server.cloudflare.title')}
|
||||
</ListSubheader>
|
||||
}
|
||||
>
|
||||
<ListItem>
|
||||
<ListItemText
|
||||
primary={t('settings.server.cloudflare.flaresolverr.enabled.label.title')}
|
||||
secondary={
|
||||
<Trans i18nKey="settings.server.cloudflare.flaresolverr.enabled.label.description">
|
||||
See{' '}
|
||||
<Link
|
||||
href="https://github.com/FlareSolverr/FlareSolverr?tab=readme-ov-file#installation"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
FlareSolverr
|
||||
</Link>{' '}
|
||||
for information on how to set it up
|
||||
</Trans>
|
||||
}
|
||||
/>
|
||||
<Switch
|
||||
edge="end"
|
||||
checked={!!serverSettings?.flareSolverrEnabled}
|
||||
onChange={(e) => updateSetting('flareSolverrEnabled', e.target.checked)}
|
||||
/>
|
||||
</ListItem>
|
||||
<TextSetting
|
||||
settingName={t('settings.server.cloudflare.flaresolverr.url.label.title')}
|
||||
dialogDescription={t('settings.server.cloudflare.flaresolverr.url.label.description')}
|
||||
value={serverSettings?.flareSolverrUrl}
|
||||
handleChange={(url) => updateSetting('flareSolverrUrl', url)}
|
||||
/>
|
||||
<NumberSetting
|
||||
settingTitle={t('settings.server.cloudflare.flaresolverr.timeout.label.title')}
|
||||
settingValue={
|
||||
serverSettings?.flareSolverrTimeout !== undefined
|
||||
? t('global.time.seconds.value', { count: serverSettings.flareSolverrTimeout })
|
||||
: undefined
|
||||
}
|
||||
dialogDescription={t('settings.server.cloudflare.flaresolverr.timeout.label.description')}
|
||||
value={serverSettings?.flareSolverrTimeout ?? 60}
|
||||
defaultValue={60}
|
||||
minValue={20}
|
||||
maxValue={60 * 5}
|
||||
stepSize={1}
|
||||
showSlider
|
||||
valueUnit={t('global.time.seconds.second_other')}
|
||||
handleUpdate={(timeout) => updateSetting('flareSolverrTimeout', timeout)}
|
||||
/>
|
||||
<TextSetting
|
||||
settingName={t('settings.server.cloudflare.flaresolverr.session.name.label.title')}
|
||||
value={serverSettings?.flareSolverrSessionName}
|
||||
handleChange={(sessionName) => updateSetting('flareSolverrSessionName', sessionName)}
|
||||
/>
|
||||
<NumberSetting
|
||||
settingTitle={t('settings.server.cloudflare.flaresolverr.session.ttl.label.title')}
|
||||
settingValue={
|
||||
serverSettings?.flareSolverrTimeout !== undefined
|
||||
? t('global.time.minutes.value', { count: serverSettings.flareSolverrSessionTtl })
|
||||
: undefined
|
||||
}
|
||||
dialogDescription={t('settings.server.cloudflare.flaresolverr.session.ttl.label.description')}
|
||||
value={serverSettings?.flareSolverrSessionTtl ?? 15}
|
||||
defaultValue={15}
|
||||
minValue={1}
|
||||
maxValue={60}
|
||||
stepSize={1}
|
||||
showSlider
|
||||
valueUnit={t('global.time.minutes.minute_other')}
|
||||
handleUpdate={(sessionTTL) => updateSetting('flareSolverrSessionTtl', sessionTTL)}
|
||||
/>
|
||||
</List>
|
||||
<List
|
||||
subheader={
|
||||
<ListSubheader component="div" id="server-settings-misc">
|
||||
|
||||
Reference in New Issue
Block a user