Add new FlareSolverr "response fallback" setting

This commit is contained in:
schroda
2024-07-28 22:47:03 +02:00
parent 3065e80b36
commit 792bbe4563
6 changed files with 38 additions and 9 deletions

View File

@@ -953,6 +953,12 @@
"title": "FlareSolverr enabled" "title": "FlareSolverr enabled"
} }
}, },
"response_fallback": {
"label": {
"description": "Use the FlareSolverr response in case the server runs into a Cloudflare challenge while FlareSolverr does not and is therefore unable to solve the challenge (does not work for images)",
"title": "Response fallback"
}
},
"session": { "session": {
"name": { "name": {
"label": { "label": {

View File

@@ -76,5 +76,6 @@ export const SERVER_SETTINGS = gql`
flareSolverrTimeout flareSolverrTimeout
flareSolverrSessionName flareSolverrSessionName
flareSolverrSessionTtl flareSolverrSessionTtl
flareSolverrAsResponseFallback
} }
`; `;

View File

@@ -387,7 +387,7 @@ export type MangaNodeListFieldPolicy = {
pageInfo?: FieldPolicy<any> | FieldReadFunction<any>, pageInfo?: FieldPolicy<any> | FieldReadFunction<any>,
totalCount?: FieldPolicy<any> | FieldReadFunction<any> totalCount?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type MangaTypeKeySpecifier = ('age' | 'artist' | 'author' | 'bookmarkCount' | 'categories' | 'chapters' | 'chaptersAge' | 'chaptersLastFetchedAt' | 'description' | 'downloadCount' | 'firstUnreadChapter' | 'genre' | 'id' | 'inLibrary' | 'inLibraryAt' | 'initialized' | 'lastFetchedAt' | 'lastReadChapter' | 'latestFetchedChapter' | 'latestReadChapter' | 'latestUploadedChapter' | 'meta' | 'realUrl' | 'source' | 'sourceId' | 'status' | 'thumbnailUrl' | 'thumbnailUrlLastFetched' | 'title' | 'trackRecords' | 'unreadCount' | 'updateStrategy' | 'url' | MangaTypeKeySpecifier)[]; export type MangaTypeKeySpecifier = ('age' | 'artist' | 'author' | 'bookmarkCount' | 'categories' | 'chapters' | 'chaptersAge' | 'chaptersLastFetchedAt' | 'description' | 'downloadCount' | 'firstUnreadChapter' | 'genre' | 'hasDuplicateChapters' | 'id' | 'inLibrary' | 'inLibraryAt' | 'initialized' | 'lastFetchedAt' | 'lastReadChapter' | 'latestFetchedChapter' | 'latestReadChapter' | 'latestUploadedChapter' | 'meta' | 'realUrl' | 'source' | 'sourceId' | 'status' | 'thumbnailUrl' | 'thumbnailUrlLastFetched' | 'title' | 'trackRecords' | 'unreadCount' | 'updateStrategy' | 'url' | MangaTypeKeySpecifier)[];
export type MangaTypeFieldPolicy = { export type MangaTypeFieldPolicy = {
age?: FieldPolicy<any> | FieldReadFunction<any>, age?: FieldPolicy<any> | FieldReadFunction<any>,
artist?: FieldPolicy<any> | FieldReadFunction<any>, artist?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -401,6 +401,7 @@ export type MangaTypeFieldPolicy = {
downloadCount?: FieldPolicy<any> | FieldReadFunction<any>, downloadCount?: FieldPolicy<any> | FieldReadFunction<any>,
firstUnreadChapter?: FieldPolicy<any> | FieldReadFunction<any>, firstUnreadChapter?: FieldPolicy<any> | FieldReadFunction<any>,
genre?: FieldPolicy<any> | FieldReadFunction<any>, genre?: FieldPolicy<any> | FieldReadFunction<any>,
hasDuplicateChapters?: FieldPolicy<any> | FieldReadFunction<any>,
id?: FieldPolicy<any> | FieldReadFunction<any>, id?: FieldPolicy<any> | FieldReadFunction<any>,
inLibrary?: FieldPolicy<any> | FieldReadFunction<any>, inLibrary?: FieldPolicy<any> | FieldReadFunction<any>,
inLibraryAt?: FieldPolicy<any> | FieldReadFunction<any>, inLibraryAt?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -521,7 +522,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' | 'autoDownloadIgnoreReUploads' | '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 PartialSettingsTypeKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadIgnoreReUploads' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrAsResponseFallback' | '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>,
autoDownloadIgnoreReUploads?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadIgnoreReUploads?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -543,6 +544,7 @@ export type PartialSettingsTypeFieldPolicy = {
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>, excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>, excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
extensionRepos?: FieldPolicy<any> | FieldReadFunction<any>, extensionRepos?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrAsResponseFallback?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrEnabled?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrSessionName?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrSessionName?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrSessionTtl?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrSessionTtl?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -659,7 +661,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' | 'autoDownloadIgnoreReUploads' | '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 SettingsKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadIgnoreReUploads' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrAsResponseFallback' | '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>,
autoDownloadIgnoreReUploads?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadIgnoreReUploads?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -681,6 +683,7 @@ export type SettingsFieldPolicy = {
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>, excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>, excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
extensionRepos?: FieldPolicy<any> | FieldReadFunction<any>, extensionRepos?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrAsResponseFallback?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrEnabled?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrSessionName?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrSessionName?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrSessionTtl?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrSessionTtl?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -706,7 +709,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' | 'autoDownloadIgnoreReUploads' | '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 SettingsTypeKeySpecifier = ('autoDownloadAheadLimit' | 'autoDownloadIgnoreReUploads' | 'autoDownloadNewChapters' | 'autoDownloadNewChaptersLimit' | 'backupInterval' | 'backupPath' | 'backupTTL' | 'backupTime' | 'basicAuthEnabled' | 'basicAuthPassword' | 'basicAuthUsername' | 'debugLogsEnabled' | 'downloadAsCbz' | 'downloadsPath' | 'electronPath' | 'excludeCompleted' | 'excludeEntryWithUnreadChapters' | 'excludeNotStarted' | 'excludeUnreadChapters' | 'extensionRepos' | 'flareSolverrAsResponseFallback' | '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>,
autoDownloadIgnoreReUploads?: FieldPolicy<any> | FieldReadFunction<any>, autoDownloadIgnoreReUploads?: FieldPolicy<any> | FieldReadFunction<any>,
@@ -728,6 +731,7 @@ export type SettingsTypeFieldPolicy = {
excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>, excludeNotStarted?: FieldPolicy<any> | FieldReadFunction<any>,
excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>, excludeUnreadChapters?: FieldPolicy<any> | FieldReadFunction<any>,
extensionRepos?: FieldPolicy<any> | FieldReadFunction<any>, extensionRepos?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrAsResponseFallback?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrEnabled?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrEnabled?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrSessionName?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrSessionName?: FieldPolicy<any> | FieldReadFunction<any>,
flareSolverrSessionTtl?: FieldPolicy<any> | FieldReadFunction<any>, flareSolverrSessionTtl?: FieldPolicy<any> | FieldReadFunction<any>,

View File

@@ -996,6 +996,7 @@ export type MangaType = {
downloadCount: Scalars['Int']['output']; downloadCount: Scalars['Int']['output'];
firstUnreadChapter?: Maybe<ChapterType>; firstUnreadChapter?: Maybe<ChapterType>;
genre: Array<Scalars['String']['output']>; genre: Array<Scalars['String']['output']>;
hasDuplicateChapters: Scalars['Boolean']['output'];
id: Scalars['Int']['output']; id: Scalars['Int']['output'];
inLibrary: Scalars['Boolean']['output']; inLibrary: Scalars['Boolean']['output'];
inLibraryAt: Scalars['LongString']['output']; inLibraryAt: Scalars['LongString']['output'];
@@ -1462,6 +1463,7 @@ export type PartialSettingsType = Settings & {
excludeNotStarted?: Maybe<Scalars['Boolean']['output']>; excludeNotStarted?: Maybe<Scalars['Boolean']['output']>;
excludeUnreadChapters?: Maybe<Scalars['Boolean']['output']>; excludeUnreadChapters?: Maybe<Scalars['Boolean']['output']>;
extensionRepos?: Maybe<Array<Scalars['String']['output']>>; extensionRepos?: Maybe<Array<Scalars['String']['output']>>;
flareSolverrAsResponseFallback?: Maybe<Scalars['Boolean']['output']>;
flareSolverrEnabled?: Maybe<Scalars['Boolean']['output']>; flareSolverrEnabled?: Maybe<Scalars['Boolean']['output']>;
flareSolverrSessionName?: Maybe<Scalars['String']['output']>; flareSolverrSessionName?: Maybe<Scalars['String']['output']>;
flareSolverrSessionTtl?: Maybe<Scalars['Int']['output']>; flareSolverrSessionTtl?: Maybe<Scalars['Int']['output']>;
@@ -1508,6 +1510,7 @@ export type PartialSettingsTypeInput = {
excludeNotStarted?: InputMaybe<Scalars['Boolean']['input']>; excludeNotStarted?: InputMaybe<Scalars['Boolean']['input']>;
excludeUnreadChapters?: InputMaybe<Scalars['Boolean']['input']>; excludeUnreadChapters?: InputMaybe<Scalars['Boolean']['input']>;
extensionRepos?: InputMaybe<Array<Scalars['String']['input']>>; extensionRepos?: InputMaybe<Array<Scalars['String']['input']>>;
flareSolverrAsResponseFallback?: InputMaybe<Scalars['Boolean']['input']>;
flareSolverrEnabled?: InputMaybe<Scalars['Boolean']['input']>; flareSolverrEnabled?: InputMaybe<Scalars['Boolean']['input']>;
flareSolverrSessionName?: InputMaybe<Scalars['String']['input']>; flareSolverrSessionName?: InputMaybe<Scalars['String']['input']>;
flareSolverrSessionTtl?: InputMaybe<Scalars['Int']['input']>; flareSolverrSessionTtl?: InputMaybe<Scalars['Int']['input']>;
@@ -1878,6 +1881,7 @@ export type Settings = {
excludeNotStarted?: Maybe<Scalars['Boolean']['output']>; excludeNotStarted?: Maybe<Scalars['Boolean']['output']>;
excludeUnreadChapters?: Maybe<Scalars['Boolean']['output']>; excludeUnreadChapters?: Maybe<Scalars['Boolean']['output']>;
extensionRepos?: Maybe<Array<Scalars['String']['output']>>; extensionRepos?: Maybe<Array<Scalars['String']['output']>>;
flareSolverrAsResponseFallback?: Maybe<Scalars['Boolean']['output']>;
flareSolverrEnabled?: Maybe<Scalars['Boolean']['output']>; flareSolverrEnabled?: Maybe<Scalars['Boolean']['output']>;
flareSolverrSessionName?: Maybe<Scalars['String']['output']>; flareSolverrSessionName?: Maybe<Scalars['String']['output']>;
flareSolverrSessionTtl?: Maybe<Scalars['Int']['output']>; flareSolverrSessionTtl?: Maybe<Scalars['Int']['output']>;
@@ -1927,6 +1931,7 @@ export type SettingsType = Settings & {
excludeNotStarted: Scalars['Boolean']['output']; excludeNotStarted: Scalars['Boolean']['output'];
excludeUnreadChapters: Scalars['Boolean']['output']; excludeUnreadChapters: Scalars['Boolean']['output'];
extensionRepos: Array<Scalars['String']['output']>; extensionRepos: Array<Scalars['String']['output']>;
flareSolverrAsResponseFallback: Scalars['Boolean']['output'];
flareSolverrEnabled: Scalars['Boolean']['output']; flareSolverrEnabled: Scalars['Boolean']['output'];
flareSolverrSessionName: Scalars['String']['output']; flareSolverrSessionName: Scalars['String']['output'];
flareSolverrSessionTtl: Scalars['Int']['output']; flareSolverrSessionTtl: Scalars['Int']['output'];
@@ -2740,7 +2745,7 @@ export type MangaScreenFieldsFragment = { __typename?: 'MangaType', artist?: str
export type MangaLibraryDuplicateScreenFieldsFragment = { __typename?: 'MangaType', description?: string | null, id: number, title: string, thumbnailUrl?: string | null, thumbnailUrlLastFetched?: string | null, inLibrary: boolean, initialized: boolean, sourceId: string, unreadCount: number, downloadCount: number, bookmarkCount: number, chapters: { __typename?: 'ChapterNodeList', totalCount: number } }; export type MangaLibraryDuplicateScreenFieldsFragment = { __typename?: 'MangaType', description?: string | null, id: number, title: string, thumbnailUrl?: string | null, thumbnailUrlLastFetched?: string | null, inLibrary: boolean, initialized: boolean, sourceId: string, unreadCount: number, downloadCount: number, bookmarkCount: number, chapters: { __typename?: 'ChapterNodeList', totalCount: 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, autoDownloadIgnoreReUploads?: boolean | null, 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, autoDownloadIgnoreReUploads?: boolean | null, 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, flareSolverrAsResponseFallback: boolean };
export type SourceBaseFieldsFragment = { __typename?: 'SourceType', id: string, name: string, displayName: string }; export type SourceBaseFieldsFragment = { __typename?: 'SourceType', id: string, name: string, displayName: string };
@@ -3094,14 +3099,14 @@ export type ResetServerSettingsMutationVariables = Exact<{
}>; }>;
export type ResetServerSettingsMutation = { __typename?: 'Mutation', resetSettings: { __typename?: 'ResetSettingsPayload', 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, autoDownloadIgnoreReUploads?: boolean | null, 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', 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, autoDownloadIgnoreReUploads?: boolean | null, 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, flareSolverrAsResponseFallback: boolean } } };
export type UpdateServerSettingsMutationVariables = Exact<{ export type UpdateServerSettingsMutationVariables = Exact<{
input: SetSettingsInput; input: SetSettingsInput;
}>; }>;
export type UpdateServerSettingsMutation = { __typename?: 'Mutation', setSettings: { __typename?: 'SetSettingsPayload', 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, autoDownloadIgnoreReUploads?: boolean | null, 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', 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, autoDownloadIgnoreReUploads?: boolean | null, 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, flareSolverrAsResponseFallback: boolean } } };
export type GetSourceMangasFetchMutationVariables = Exact<{ export type GetSourceMangasFetchMutationVariables = Exact<{
input: FetchSourceMangaInput; input: FetchSourceMangaInput;
@@ -3461,7 +3466,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, 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, autoDownloadIgnoreReUploads?: boolean | null, 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, autoDownloadIgnoreReUploads?: boolean | null, 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, flareSolverrAsResponseFallback: boolean } };
export type GetSourceBrowseQueryVariables = Exact<{ export type GetSourceBrowseQueryVariables = Exact<{
id: Scalars['LongString']['input']; id: Scalars['LongString']['input'];

View File

@@ -51,6 +51,7 @@ type ServerSettingsType = Pick<
| 'flareSolverrUrl' | 'flareSolverrUrl'
| 'flareSolverrSessionName' | 'flareSolverrSessionName'
| 'flareSolverrSessionTtl' | 'flareSolverrSessionTtl'
| 'flareSolverrAsResponseFallback'
>; >;
const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType => ({ const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType => ({
@@ -73,6 +74,7 @@ const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType
flareSolverrUrl: settings.flareSolverrUrl, flareSolverrUrl: settings.flareSolverrUrl,
flareSolverrSessionName: settings.flareSolverrSessionName, flareSolverrSessionName: settings.flareSolverrSessionName,
flareSolverrSessionTtl: settings.flareSolverrSessionTtl, flareSolverrSessionTtl: settings.flareSolverrSessionTtl,
flareSolverrAsResponseFallback: settings.flareSolverrAsResponseFallback,
}); });
export const ServerSettings = () => { export const ServerSettings = () => {
@@ -357,6 +359,17 @@ export const ServerSettings = () => {
valueUnit={t('global.time.minutes.minute_other')} valueUnit={t('global.time.minutes.minute_other')}
handleUpdate={(sessionTTL) => updateSetting('flareSolverrSessionTtl', sessionTTL)} handleUpdate={(sessionTTL) => updateSetting('flareSolverrSessionTtl', sessionTTL)}
/> />
<ListItem>
<ListItemText
primary={t('settings.server.cloudflare.flaresolverr.response_fallback.label.title')}
secondary={t('settings.server.cloudflare.flaresolverr.response_fallback.label.description')}
/>
<Switch
edge="end"
checked={serverSettings.flareSolverrAsResponseFallback}
onChange={(e) => updateSetting('flareSolverrAsResponseFallback', e.target.checked)}
/>
</ListItem>
</List> </List>
<List <List
subheader={ subheader={

View File

@@ -1,7 +1,7 @@
[ [
{ {
"uiVersion": "PREVIEW", "uiVersion": "PREVIEW",
"serverVersion": "r1540" "serverVersion": "r1548"
}, },
{ {
"tag": "v1.1.0", "tag": "v1.1.0",