Feature/settings add new socks proxy settings (#617)

* Add new socks settings

* [VersionMapping] Require server version "r1493" for preview
This commit is contained in:
schroda
2024-02-22 00:25:12 +01:00
committed by GitHub
parent ab0ecf4da0
commit 629b742140
7 changed files with 79 additions and 19 deletions

View File

@@ -27,9 +27,9 @@ import InfoIcon from '@mui/icons-material/Info';
import { TranslationKey } from '@/typings.ts'; import { TranslationKey } from '@/typings.ts';
export type SelectSettingValueDisplayInfo = { export type SelectSettingValueDisplayInfo = {
text: TranslationKey; text: TranslationKey | string;
description?: TranslationKey; description?: TranslationKey | string;
disclaimer?: TranslationKey; disclaimer?: TranslationKey | string;
}; };
export type SelectSettingValue<Value> = [Value: Value, DisplayInfo: SelectSettingValueDisplayInfo]; export type SelectSettingValue<Value> = [Value: Value, DisplayInfo: SelectSettingValueDisplayInfo];
@@ -85,7 +85,7 @@ export const SelectSetting = <SettingValue extends string | number>({
<ListItemButton disabled={disabled} onClick={() => setIsDialogOpen(true)}> <ListItemButton disabled={disabled} onClick={() => setIsDialogOpen(true)}>
<ListItemText <ListItemText
primary={settingName} primary={settingName}
secondary={valueDisplayText ? t(valueDisplayText) : t('global.label.loading')} secondary={valueDisplayText ? t(valueDisplayText as TranslationKey) : t('global.label.loading')}
secondaryTypographyProps={{ style: { display: 'flex', flexDirection: 'column' } }} secondaryTypographyProps={{ style: { display: 'flex', flexDirection: 'column' } }}
/> />
</ListItemButton> </ListItemButton>
@@ -105,7 +105,7 @@ export const SelectSetting = <SettingValue extends string | number>({
whiteSpace: 'pre-line', whiteSpace: 'pre-line',
}} }}
> >
{t(dialogValueDisplayInfo.description)} {t(dialogValueDisplayInfo.description as TranslationKey)}
</Typography> </Typography>
)} )}
{dialogValueDisplayInfo.disclaimer && ( {dialogValueDisplayInfo.disclaimer && (
@@ -119,7 +119,7 @@ export const SelectSetting = <SettingValue extends string | number>({
whiteSpace: 'pre-line', whiteSpace: 'pre-line',
}} }}
> >
{t(dialogValueDisplayInfo.disclaimer)} {t(dialogValueDisplayInfo.disclaimer as TranslationKey)}
</Typography> </Typography>
</Stack> </Stack>
)} )}
@@ -133,7 +133,7 @@ export const SelectSetting = <SettingValue extends string | number>({
> >
{values.map(([selectValue, { text: selectText }]) => ( {values.map(([selectValue, { text: selectText }]) => (
<MenuItem key={selectValue} value={selectValue}> <MenuItem key={selectValue} value={selectValue}>
{t(selectText)} {t(selectText as TranslationKey)}
</MenuItem> </MenuItem>
))} ))}
</Select> </Select>

View File

@@ -888,9 +888,12 @@
}, },
"socks_proxy": { "socks_proxy": {
"label": { "label": {
"enable": "Use SOCKS5 proxy", "enable": "Use SOCKS proxy",
"host": "SOCKS5 host", "host": "SOCKS host",
"port": "SOCKS5 port" "password": "SOCKS password",
"port": "SOCKS port",
"username": "SOCKS username",
"version": "SOCKS version"
}, },
"title": "SOCKS proxy" "title": "SOCKS proxy"
}, },

View File

@@ -475,8 +475,11 @@ export const SERVER_SETTINGS = gql`
# Socks proxy # Socks proxy
socksProxyEnabled socksProxyEnabled
socksProxyVersion
socksProxyHost socksProxyHost
socksProxyPort socksProxyPort
socksProxyUsername
socksProxyPassword
# webUI # webUI
webUIFlavor webUIFlavor

View File

@@ -512,7 +512,7 @@ export type PageInfoFieldPolicy = {
hasPreviousPage?: FieldPolicy<any> | FieldReadFunction<any>, hasPreviousPage?: FieldPolicy<any> | FieldReadFunction<any>,
startCursor?: FieldPolicy<any> | FieldReadFunction<any> startCursor?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type PartialSettingsTypeKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrEnabled' | 'flareSolverrSessionName' | 'flareSolverrSessionTtl' | 'flareSolverrTimeout' | 'flareSolverrUrl' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | PartialSettingsTypeKeySpecifier)[]; export type PartialSettingsTypeKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrEnabled' | 'flareSolverrSessionName' | 'flareSolverrSessionTtl' | 'flareSolverrTimeout' | 'flareSolverrUrl' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPassword' | 'socksProxyPort' | 'socksProxyUsername' | 'socksProxyVersion' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | PartialSettingsTypeKeySpecifier)[];
export type PartialSettingsTypeFieldPolicy = { export type PartialSettingsTypeFieldPolicy = {
autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>,
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -547,7 +547,10 @@ export type PartialSettingsTypeFieldPolicy = {
port?: FieldPolicy<any> | FieldReadFunction<any>, port?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyEnabled?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyPassword?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyUsername?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyVersion?: FieldPolicy<any> | FieldReadFunction<any>,
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>, systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>, updateMangas?: FieldPolicy<any> | FieldReadFunction<any>,
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>, webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -646,7 +649,7 @@ export type SetSourceMetaPayloadFieldPolicy = {
clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>, clientMutationId?: FieldPolicy<any> | FieldReadFunction<any>,
meta?: FieldPolicy<any> | FieldReadFunction<any> meta?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type SettingsKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrEnabled' | 'flareSolverrSessionName' | 'flareSolverrSessionTtl' | 'flareSolverrTimeout' | 'flareSolverrUrl' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | SettingsKeySpecifier)[]; export type SettingsKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrEnabled' | 'flareSolverrSessionName' | 'flareSolverrSessionTtl' | 'flareSolverrTimeout' | 'flareSolverrUrl' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPassword' | 'socksProxyPort' | 'socksProxyUsername' | 'socksProxyVersion' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | SettingsKeySpecifier)[];
export type SettingsFieldPolicy = { export type SettingsFieldPolicy = {
autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>,
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -681,7 +684,10 @@ export type SettingsFieldPolicy = {
port?: FieldPolicy<any> | FieldReadFunction<any>, port?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyEnabled?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyPassword?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyUsername?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyVersion?: FieldPolicy<any> | FieldReadFunction<any>,
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>, systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>, updateMangas?: FieldPolicy<any> | FieldReadFunction<any>,
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>, webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -689,7 +695,7 @@ export type SettingsFieldPolicy = {
webUIInterface?: FieldPolicy<any> | FieldReadFunction<any>, webUIInterface?: FieldPolicy<any> | FieldReadFunction<any>,
webUIUpdateCheckInterval?: FieldPolicy<any> | FieldReadFunction<any> webUIUpdateCheckInterval?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type SettingsTypeKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrEnabled' | 'flareSolverrSessionName' | 'flareSolverrSessionTtl' | 'flareSolverrTimeout' | 'flareSolverrUrl' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPort' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | SettingsTypeKeySpecifier)[]; export type SettingsTypeKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrEnabled' | 'flareSolverrSessionName' | 'flareSolverrSessionTtl' | 'flareSolverrTimeout' | 'flareSolverrUrl' | 'globalUpdateInterval' | 'gqlDebugLogsEnabled' | 'initialOpenInBrowserEnabled' | 'ip' | 'localSourcePath' | 'maxSourcesInParallel' | 'port' | 'socksProxyEnabled' | 'socksProxyHost' | 'socksProxyPassword' | 'socksProxyPort' | 'socksProxyUsername' | 'socksProxyVersion' | 'systemTrayEnabled' | 'updateMangas' | 'webUIChannel' | 'webUIFlavor' | 'webUIInterface' | 'webUIUpdateCheckInterval' | SettingsTypeKeySpecifier)[];
export type SettingsTypeFieldPolicy = { export type SettingsTypeFieldPolicy = {
autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadAheadLimit?: FieldPolicy<any> | FieldReadFunction<any>,
autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadNewChapters?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -724,7 +730,10 @@ export type SettingsTypeFieldPolicy = {
port?: FieldPolicy<any> | FieldReadFunction<any>, port?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyEnabled?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyHost?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyPassword?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>, socksProxyPort?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyUsername?: FieldPolicy<any> | FieldReadFunction<any>,
socksProxyVersion?: FieldPolicy<any> | FieldReadFunction<any>,
systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>, systemTrayEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
updateMangas?: FieldPolicy<any> | FieldReadFunction<any>, updateMangas?: FieldPolicy<any> | FieldReadFunction<any>,
webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>, webUIChannel?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -871,12 +880,13 @@ export type TrackerNodeListFieldPolicy = {
pageInfo?: FieldPolicy<any> | FieldReadFunction<any>, pageInfo?: FieldPolicy<any> | FieldReadFunction<any>,
totalCount?: FieldPolicy<any> | FieldReadFunction<any> totalCount?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type TrackerTypeKeySpecifier = ('authUrl' | 'icon' | 'id' | 'isLoggedIn' | 'name' | 'scores' | 'statuses' | 'trackRecords' | TrackerTypeKeySpecifier)[]; export type TrackerTypeKeySpecifier = ('authUrl' | 'icon' | 'id' | 'isLoggedIn' | 'isTokenExpired' | 'name' | 'scores' | 'statuses' | 'trackRecords' | TrackerTypeKeySpecifier)[];
export type TrackerTypeFieldPolicy = { export type TrackerTypeFieldPolicy = {
authUrl?: FieldPolicy<any> | FieldReadFunction<any>, authUrl?: FieldPolicy<any> | FieldReadFunction<any>,
icon?: FieldPolicy<any> | FieldReadFunction<any>, icon?: FieldPolicy<any> | FieldReadFunction<any>,
id?: FieldPolicy<any> | FieldReadFunction<any>, id?: FieldPolicy<any> | FieldReadFunction<any>,
isLoggedIn?: FieldPolicy<any> | FieldReadFunction<any>, isLoggedIn?: FieldPolicy<any> | FieldReadFunction<any>,
isTokenExpired?: FieldPolicy<any> | FieldReadFunction<any>,
name?: FieldPolicy<any> | FieldReadFunction<any>, name?: FieldPolicy<any> | FieldReadFunction<any>,
scores?: FieldPolicy<any> | FieldReadFunction<any>, scores?: FieldPolicy<any> | FieldReadFunction<any>,
statuses?: FieldPolicy<any> | FieldReadFunction<any>, statuses?: FieldPolicy<any> | FieldReadFunction<any>,

View File

@@ -1395,7 +1395,10 @@ export type PartialSettingsType = Settings & {
port?: Maybe<Scalars['Int']['output']>; port?: Maybe<Scalars['Int']['output']>;
socksProxyEnabled?: Maybe<Scalars['Boolean']['output']>; socksProxyEnabled?: Maybe<Scalars['Boolean']['output']>;
socksProxyHost?: Maybe<Scalars['String']['output']>; socksProxyHost?: Maybe<Scalars['String']['output']>;
socksProxyPassword?: Maybe<Scalars['String']['output']>;
socksProxyPort?: Maybe<Scalars['String']['output']>; socksProxyPort?: Maybe<Scalars['String']['output']>;
socksProxyUsername?: Maybe<Scalars['String']['output']>;
socksProxyVersion?: Maybe<Scalars['Int']['output']>;
systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>; systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>;
updateMangas?: Maybe<Scalars['Boolean']['output']>; updateMangas?: Maybe<Scalars['Boolean']['output']>;
webUIChannel?: Maybe<WebUiChannel>; webUIChannel?: Maybe<WebUiChannel>;
@@ -1437,7 +1440,10 @@ export type PartialSettingsTypeInput = {
port?: InputMaybe<Scalars['Int']['input']>; port?: InputMaybe<Scalars['Int']['input']>;
socksProxyEnabled?: InputMaybe<Scalars['Boolean']['input']>; socksProxyEnabled?: InputMaybe<Scalars['Boolean']['input']>;
socksProxyHost?: InputMaybe<Scalars['String']['input']>; socksProxyHost?: InputMaybe<Scalars['String']['input']>;
socksProxyPassword?: InputMaybe<Scalars['String']['input']>;
socksProxyPort?: InputMaybe<Scalars['String']['input']>; socksProxyPort?: InputMaybe<Scalars['String']['input']>;
socksProxyUsername?: InputMaybe<Scalars['String']['input']>;
socksProxyVersion?: InputMaybe<Scalars['Int']['input']>;
systemTrayEnabled?: InputMaybe<Scalars['Boolean']['input']>; systemTrayEnabled?: InputMaybe<Scalars['Boolean']['input']>;
updateMangas?: InputMaybe<Scalars['Boolean']['input']>; updateMangas?: InputMaybe<Scalars['Boolean']['input']>;
webUIChannel?: InputMaybe<WebUiChannel>; webUIChannel?: InputMaybe<WebUiChannel>;
@@ -1795,7 +1801,10 @@ export type Settings = {
port?: Maybe<Scalars['Int']['output']>; port?: Maybe<Scalars['Int']['output']>;
socksProxyEnabled?: Maybe<Scalars['Boolean']['output']>; socksProxyEnabled?: Maybe<Scalars['Boolean']['output']>;
socksProxyHost?: Maybe<Scalars['String']['output']>; socksProxyHost?: Maybe<Scalars['String']['output']>;
socksProxyPassword?: Maybe<Scalars['String']['output']>;
socksProxyPort?: Maybe<Scalars['String']['output']>; socksProxyPort?: Maybe<Scalars['String']['output']>;
socksProxyUsername?: Maybe<Scalars['String']['output']>;
socksProxyVersion?: Maybe<Scalars['Int']['output']>;
systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>; systemTrayEnabled?: Maybe<Scalars['Boolean']['output']>;
updateMangas?: Maybe<Scalars['Boolean']['output']>; updateMangas?: Maybe<Scalars['Boolean']['output']>;
webUIChannel?: Maybe<WebUiChannel>; webUIChannel?: Maybe<WebUiChannel>;
@@ -1840,7 +1849,10 @@ export type SettingsType = Settings & {
port: Scalars['Int']['output']; port: Scalars['Int']['output'];
socksProxyEnabled: Scalars['Boolean']['output']; socksProxyEnabled: Scalars['Boolean']['output'];
socksProxyHost: Scalars['String']['output']; socksProxyHost: Scalars['String']['output'];
socksProxyPassword: Scalars['String']['output'];
socksProxyPort: Scalars['String']['output']; socksProxyPort: Scalars['String']['output'];
socksProxyUsername: Scalars['String']['output'];
socksProxyVersion: Scalars['Int']['output'];
systemTrayEnabled: Scalars['Boolean']['output']; systemTrayEnabled: Scalars['Boolean']['output'];
updateMangas: Scalars['Boolean']['output']; updateMangas: Scalars['Boolean']['output'];
webUIChannel: WebUiChannel; webUIChannel: WebUiChannel;
@@ -2171,6 +2183,7 @@ export type TrackerType = {
icon: Scalars['String']['output']; icon: Scalars['String']['output'];
id: Scalars['Int']['output']; id: Scalars['Int']['output'];
isLoggedIn: Scalars['Boolean']['output']; isLoggedIn: Scalars['Boolean']['output'];
isTokenExpired: Scalars['Boolean']['output'];
name: Scalars['String']['output']; name: Scalars['String']['output'];
scores: Array<Scalars['String']['output']>; scores: Array<Scalars['String']['output']>;
statuses: Array<TrackStatusType>; statuses: Array<TrackStatusType>;
@@ -2544,7 +2557,7 @@ export type WebuiUpdateInfoFragment = { __typename?: 'WebUIUpdateInfo', channel:
export type WebuiUpdateStatusFragment = { __typename?: 'WebUIUpdateStatus', progress: number, state: UpdateState, info: { __typename?: 'WebUIUpdateInfo', channel: string, tag: string } }; export type WebuiUpdateStatusFragment = { __typename?: 'WebUIUpdateStatus', progress: number, state: UpdateState, info: { __typename?: 'WebUIUpdateInfo', channel: string, tag: string } };
export type ServerSettingsFragment = { __typename?: 'SettingsType', ip: string, port: number, socksProxyEnabled: boolean, socksProxyHost: string, socksProxyPort: string, webUIFlavor: WebUiFlavor, initialOpenInBrowserEnabled: boolean, webUIInterface: WebUiInterface, electronPath: string, webUIChannel: WebUiChannel, webUIUpdateCheckInterval: number, downloadAsCbz: boolean, downloadsPath: string, autoDownloadNewChapters: boolean, excludeEntryWithUnreadChapters: boolean, autoDownloadNewChaptersLimit: number, extensionRepos: Array<string>, maxSourcesInParallel: number, excludeUnreadChapters: boolean, excludeNotStarted: boolean, excludeCompleted: boolean, globalUpdateInterval: number, updateMangas: boolean, basicAuthEnabled: boolean, basicAuthUsername: string, basicAuthPassword: string, debugLogsEnabled: boolean, gqlDebugLogsEnabled: boolean, systemTrayEnabled: boolean, backupPath: string, backupTime: string, backupInterval: number, backupTTL: number, localSourcePath: string, flareSolverrEnabled: boolean, flareSolverrUrl: string, flareSolverrTimeout: number, flareSolverrSessionName: string, flareSolverrSessionTtl: number }; export type ServerSettingsFragment = { __typename?: 'SettingsType', ip: string, port: number, socksProxyEnabled: boolean, socksProxyVersion: number, socksProxyHost: string, socksProxyPort: string, socksProxyUsername: string, socksProxyPassword: string, webUIFlavor: WebUiFlavor, initialOpenInBrowserEnabled: boolean, webUIInterface: WebUiInterface, electronPath: string, webUIChannel: WebUiChannel, webUIUpdateCheckInterval: number, downloadAsCbz: boolean, downloadsPath: string, autoDownloadNewChapters: boolean, excludeEntryWithUnreadChapters: boolean, autoDownloadNewChaptersLimit: number, extensionRepos: Array<string>, maxSourcesInParallel: number, excludeUnreadChapters: boolean, excludeNotStarted: boolean, excludeCompleted: boolean, globalUpdateInterval: number, updateMangas: boolean, basicAuthEnabled: boolean, basicAuthUsername: string, basicAuthPassword: string, debugLogsEnabled: boolean, gqlDebugLogsEnabled: boolean, systemTrayEnabled: boolean, backupPath: string, backupTime: string, backupInterval: number, backupTTL: number, localSourcePath: string, flareSolverrEnabled: boolean, flareSolverrUrl: string, flareSolverrTimeout: number, flareSolverrSessionName: string, flareSolverrSessionTtl: number };
export type CreateBackupMutationVariables = Exact<{ export type CreateBackupMutationVariables = Exact<{
input: CreateBackupInput; input: CreateBackupInput;
@@ -2863,14 +2876,14 @@ export type ResetServerSettingsMutationVariables = Exact<{
}>; }>;
export type ResetServerSettingsMutation = { __typename?: 'Mutation', resetSettings: { __typename?: 'ResetSettingsPayload', clientMutationId?: string | null, settings: { __typename?: 'SettingsType', ip: string, port: number, socksProxyEnabled: boolean, socksProxyHost: string, socksProxyPort: string, webUIFlavor: WebUiFlavor, initialOpenInBrowserEnabled: boolean, webUIInterface: WebUiInterface, electronPath: string, webUIChannel: WebUiChannel, webUIUpdateCheckInterval: number, downloadAsCbz: boolean, downloadsPath: string, autoDownloadNewChapters: boolean, excludeEntryWithUnreadChapters: boolean, autoDownloadNewChaptersLimit: number, extensionRepos: Array<string>, maxSourcesInParallel: number, excludeUnreadChapters: boolean, excludeNotStarted: boolean, excludeCompleted: boolean, globalUpdateInterval: number, updateMangas: boolean, basicAuthEnabled: boolean, basicAuthUsername: string, basicAuthPassword: string, debugLogsEnabled: boolean, gqlDebugLogsEnabled: boolean, systemTrayEnabled: boolean, backupPath: string, backupTime: string, backupInterval: number, backupTTL: number, localSourcePath: string, flareSolverrEnabled: boolean, flareSolverrUrl: string, flareSolverrTimeout: number, flareSolverrSessionName: string, flareSolverrSessionTtl: number } } }; export type ResetServerSettingsMutation = { __typename?: 'Mutation', resetSettings: { __typename?: 'ResetSettingsPayload', clientMutationId?: string | null, settings: { __typename?: 'SettingsType', ip: string, port: number, socksProxyEnabled: boolean, socksProxyVersion: number, socksProxyHost: string, socksProxyPort: string, socksProxyUsername: string, socksProxyPassword: string, webUIFlavor: WebUiFlavor, initialOpenInBrowserEnabled: boolean, webUIInterface: WebUiInterface, electronPath: string, webUIChannel: WebUiChannel, webUIUpdateCheckInterval: number, downloadAsCbz: boolean, downloadsPath: string, autoDownloadNewChapters: boolean, excludeEntryWithUnreadChapters: boolean, autoDownloadNewChaptersLimit: number, extensionRepos: Array<string>, maxSourcesInParallel: number, excludeUnreadChapters: boolean, excludeNotStarted: boolean, excludeCompleted: boolean, globalUpdateInterval: number, updateMangas: boolean, basicAuthEnabled: boolean, basicAuthUsername: string, basicAuthPassword: string, debugLogsEnabled: boolean, gqlDebugLogsEnabled: boolean, systemTrayEnabled: boolean, backupPath: string, backupTime: string, backupInterval: number, backupTTL: number, localSourcePath: string, flareSolverrEnabled: boolean, flareSolverrUrl: string, flareSolverrTimeout: number, flareSolverrSessionName: string, flareSolverrSessionTtl: number } } };
export type UpdateServerSettingsMutationVariables = Exact<{ export type UpdateServerSettingsMutationVariables = Exact<{
input: SetSettingsInput; input: SetSettingsInput;
}>; }>;
export type UpdateServerSettingsMutation = { __typename?: 'Mutation', setSettings: { __typename?: 'SetSettingsPayload', clientMutationId?: string | null, settings: { __typename?: 'SettingsType', ip: string, port: number, socksProxyEnabled: boolean, socksProxyHost: string, socksProxyPort: string, webUIFlavor: WebUiFlavor, initialOpenInBrowserEnabled: boolean, webUIInterface: WebUiInterface, electronPath: string, webUIChannel: WebUiChannel, webUIUpdateCheckInterval: number, downloadAsCbz: boolean, downloadsPath: string, autoDownloadNewChapters: boolean, excludeEntryWithUnreadChapters: boolean, autoDownloadNewChaptersLimit: number, extensionRepos: Array<string>, maxSourcesInParallel: number, excludeUnreadChapters: boolean, excludeNotStarted: boolean, excludeCompleted: boolean, globalUpdateInterval: number, updateMangas: boolean, basicAuthEnabled: boolean, basicAuthUsername: string, basicAuthPassword: string, debugLogsEnabled: boolean, gqlDebugLogsEnabled: boolean, systemTrayEnabled: boolean, backupPath: string, backupTime: string, backupInterval: number, backupTTL: number, localSourcePath: string, flareSolverrEnabled: boolean, flareSolverrUrl: string, flareSolverrTimeout: number, flareSolverrSessionName: string, flareSolverrSessionTtl: number } } }; export type UpdateServerSettingsMutation = { __typename?: 'Mutation', setSettings: { __typename?: 'SetSettingsPayload', clientMutationId?: string | null, settings: { __typename?: 'SettingsType', ip: string, port: number, socksProxyEnabled: boolean, socksProxyVersion: number, socksProxyHost: string, socksProxyPort: string, socksProxyUsername: string, socksProxyPassword: string, webUIFlavor: WebUiFlavor, initialOpenInBrowserEnabled: boolean, webUIInterface: WebUiInterface, electronPath: string, webUIChannel: WebUiChannel, webUIUpdateCheckInterval: number, downloadAsCbz: boolean, downloadsPath: string, autoDownloadNewChapters: boolean, excludeEntryWithUnreadChapters: boolean, autoDownloadNewChaptersLimit: number, extensionRepos: Array<string>, maxSourcesInParallel: number, excludeUnreadChapters: boolean, excludeNotStarted: boolean, excludeCompleted: boolean, globalUpdateInterval: number, updateMangas: boolean, basicAuthEnabled: boolean, basicAuthUsername: string, basicAuthPassword: string, debugLogsEnabled: boolean, gqlDebugLogsEnabled: boolean, systemTrayEnabled: boolean, backupPath: string, backupTime: string, backupInterval: number, backupTTL: number, localSourcePath: string, flareSolverrEnabled: boolean, flareSolverrUrl: string, flareSolverrTimeout: number, flareSolverrSessionName: string, flareSolverrSessionTtl: number } } };
export type GetSourceMangasFetchMutationVariables = Exact<{ export type GetSourceMangasFetchMutationVariables = Exact<{
input: FetchSourceMangaInput; input: FetchSourceMangaInput;
@@ -3092,7 +3105,7 @@ export type GetWebuiUpdateStatusQuery = { __typename?: 'Query', getWebUIUpdateSt
export type GetServerSettingsQueryVariables = Exact<{ [key: string]: never; }>; export type GetServerSettingsQueryVariables = Exact<{ [key: string]: never; }>;
export type GetServerSettingsQuery = { __typename?: 'Query', settings: { __typename?: 'SettingsType', ip: string, port: number, socksProxyEnabled: boolean, socksProxyHost: string, socksProxyPort: string, webUIFlavor: WebUiFlavor, initialOpenInBrowserEnabled: boolean, webUIInterface: WebUiInterface, electronPath: string, webUIChannel: WebUiChannel, webUIUpdateCheckInterval: number, downloadAsCbz: boolean, downloadsPath: string, autoDownloadNewChapters: boolean, excludeEntryWithUnreadChapters: boolean, autoDownloadNewChaptersLimit: number, extensionRepos: Array<string>, maxSourcesInParallel: number, excludeUnreadChapters: boolean, excludeNotStarted: boolean, excludeCompleted: boolean, globalUpdateInterval: number, updateMangas: boolean, basicAuthEnabled: boolean, basicAuthUsername: string, basicAuthPassword: string, debugLogsEnabled: boolean, gqlDebugLogsEnabled: boolean, systemTrayEnabled: boolean, backupPath: string, backupTime: string, backupInterval: number, backupTTL: number, localSourcePath: string, flareSolverrEnabled: boolean, flareSolverrUrl: string, flareSolverrTimeout: number, flareSolverrSessionName: string, flareSolverrSessionTtl: number } }; export type GetServerSettingsQuery = { __typename?: 'Query', settings: { __typename?: 'SettingsType', ip: string, port: number, socksProxyEnabled: boolean, socksProxyVersion: number, socksProxyHost: string, socksProxyPort: string, socksProxyUsername: string, socksProxyPassword: string, webUIFlavor: WebUiFlavor, initialOpenInBrowserEnabled: boolean, webUIInterface: WebUiInterface, electronPath: string, webUIChannel: WebUiChannel, webUIUpdateCheckInterval: number, downloadAsCbz: boolean, downloadsPath: string, autoDownloadNewChapters: boolean, excludeEntryWithUnreadChapters: boolean, autoDownloadNewChaptersLimit: number, extensionRepos: Array<string>, maxSourcesInParallel: number, excludeUnreadChapters: boolean, excludeNotStarted: boolean, excludeCompleted: boolean, globalUpdateInterval: number, updateMangas: boolean, basicAuthEnabled: boolean, basicAuthUsername: string, basicAuthPassword: string, debugLogsEnabled: boolean, gqlDebugLogsEnabled: boolean, systemTrayEnabled: boolean, backupPath: string, backupTime: string, backupInterval: number, backupTTL: number, localSourcePath: string, flareSolverrEnabled: boolean, flareSolverrUrl: string, flareSolverrTimeout: number, flareSolverrSessionName: string, flareSolverrSessionTtl: number } };
export type GetSourceQueryVariables = Exact<{ export type GetSourceQueryVariables = Exact<{
id: Scalars['LongString']['input']; id: Scalars['LongString']['input'];

View File

@@ -16,14 +16,18 @@ import { useLocalStorage } from '@/util/useLocalStorage.tsx';
import { TextSetting } from '@/components/settings/text/TextSetting.tsx'; import { TextSetting } from '@/components/settings/text/TextSetting.tsx';
import { ServerSettings as GqlServerSettings } from '@/typings.ts'; import { ServerSettings as GqlServerSettings } from '@/typings.ts';
import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; import { NumberSetting } from '@/components/settings/NumberSetting.tsx';
import { SelectSetting } from '@/components/settings/SelectSetting.tsx';
type ServerSettingsType = Pick< type ServerSettingsType = Pick<
GqlServerSettings, GqlServerSettings,
| 'ip' | 'ip'
| 'port' | 'port'
| 'socksProxyEnabled' | 'socksProxyEnabled'
| 'socksProxyVersion'
| 'socksProxyHost' | 'socksProxyHost'
| 'socksProxyPort' | 'socksProxyPort'
| 'socksProxyUsername'
| 'socksProxyPassword'
| 'debugLogsEnabled' | 'debugLogsEnabled'
| 'gqlDebugLogsEnabled' | 'gqlDebugLogsEnabled'
| 'systemTrayEnabled' | 'systemTrayEnabled'
@@ -41,8 +45,11 @@ const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType
ip: settings.ip, ip: settings.ip,
port: settings.port, port: settings.port,
socksProxyEnabled: settings.socksProxyEnabled, socksProxyEnabled: settings.socksProxyEnabled,
socksProxyVersion: settings.socksProxyVersion,
socksProxyHost: settings.socksProxyHost, socksProxyHost: settings.socksProxyHost,
socksProxyPort: settings.socksProxyPort, socksProxyPort: settings.socksProxyPort,
socksProxyUsername: settings.socksProxyUsername,
socksProxyPassword: settings.socksProxyPassword,
debugLogsEnabled: settings.debugLogsEnabled, debugLogsEnabled: settings.debugLogsEnabled,
gqlDebugLogsEnabled: settings.gqlDebugLogsEnabled, gqlDebugLogsEnabled: settings.gqlDebugLogsEnabled,
systemTrayEnabled: settings.systemTrayEnabled, systemTrayEnabled: settings.systemTrayEnabled,
@@ -144,6 +151,17 @@ export const ServerSettings = () => {
onChange={(e) => updateSetting('socksProxyEnabled', e.target.checked)} onChange={(e) => updateSetting('socksProxyEnabled', e.target.checked)}
/> />
</ListItem> </ListItem>
<SelectSetting<number>
settingName={t('settings.server.socks_proxy.label.version')}
value={serverSettings?.socksProxyVersion}
defaultValue={5}
values={[
[4, { text: '4' }],
[5, { text: '5' }],
]}
handleChange={(socksProxyVersion) => updateSetting('socksProxyVersion', socksProxyVersion)}
disabled={!serverSettings?.socksProxyEnabled}
/>
<TextSetting <TextSetting
settingName={t('settings.server.socks_proxy.label.host')} settingName={t('settings.server.socks_proxy.label.host')}
value={serverSettings?.socksProxyHost} value={serverSettings?.socksProxyHost}
@@ -156,6 +174,19 @@ export const ServerSettings = () => {
handleChange={(proxyPort) => updateSetting('socksProxyPort', proxyPort)} handleChange={(proxyPort) => updateSetting('socksProxyPort', proxyPort)}
disabled={!serverSettings?.socksProxyEnabled} disabled={!serverSettings?.socksProxyEnabled}
/> />
<TextSetting
settingName={t('settings.server.socks_proxy.label.username')}
value={serverSettings?.socksProxyUsername}
handleChange={(proxyUsername) => updateSetting('socksProxyUsername', proxyUsername)}
disabled={!serverSettings?.socksProxyEnabled}
/>
<TextSetting
settingName={t('settings.server.socks_proxy.label.password')}
value={serverSettings?.socksProxyPassword}
handleChange={(proxyPassword) => updateSetting('socksProxyPassword', proxyPassword)}
disabled={!serverSettings?.socksProxyEnabled}
isPassword
/>
</List> </List>
<List <List
subheader={ subheader={

View File

@@ -1,6 +1,6 @@
[ [
{ {
"uiVersion": "PREVIEW", "uiVersion": "PREVIEW",
"serverVersion": "r1487" "serverVersion": "r1493"
} }
] ]