import React from "react"; import * as GQL from "src/core/generated-graphql"; import { LoadingIndicator } from "src/components/Shared"; import { SettingSection } from "./SettingSection"; import { BooleanSetting, ModalSetting, NumberSetting, SelectSetting, StringListSetting, StringSetting, } from "./Inputs"; import { SettingStateContext } from "./context"; import { VideoPreviewInput, VideoPreviewSettingsInput, } from "./GeneratePreviewOptions"; export const SettingsConfigurationPanel: React.FC = () => { const { general, loading, error, saveGeneral } = React.useContext( SettingStateContext ); const transcodeQualities = [ GQL.StreamingResolutionEnum.Low, GQL.StreamingResolutionEnum.Standard, GQL.StreamingResolutionEnum.StandardHd, GQL.StreamingResolutionEnum.FullHd, GQL.StreamingResolutionEnum.FourK, GQL.StreamingResolutionEnum.Original, ].map(resolutionToString); function resolutionToString(r: GQL.StreamingResolutionEnum | undefined) { switch (r) { case GQL.StreamingResolutionEnum.Low: return "240p"; case GQL.StreamingResolutionEnum.Standard: return "480p"; case GQL.StreamingResolutionEnum.StandardHd: return "720p"; case GQL.StreamingResolutionEnum.FullHd: return "1080p"; case GQL.StreamingResolutionEnum.FourK: return "4k"; case GQL.StreamingResolutionEnum.Original: return "Original"; } return "Original"; } function translateQuality(quality: string) { switch (quality) { case "240p": return GQL.StreamingResolutionEnum.Low; case "480p": return GQL.StreamingResolutionEnum.Standard; case "720p": return GQL.StreamingResolutionEnum.StandardHd; case "1080p": return GQL.StreamingResolutionEnum.FullHd; case "4k": return GQL.StreamingResolutionEnum.FourK; case "Original": return GQL.StreamingResolutionEnum.Original; } return GQL.StreamingResolutionEnum.Original; } const namingHashAlgorithms = [ GQL.HashAlgorithm.Md5, GQL.HashAlgorithm.Oshash, ].map(namingHashToString); function namingHashToString(value: GQL.HashAlgorithm | undefined) { switch (value) { case GQL.HashAlgorithm.Oshash: return "oshash"; case GQL.HashAlgorithm.Md5: return "MD5"; } return "MD5"; } function translateNamingHash(value: string) { switch (value) { case "oshash": return GQL.HashAlgorithm.Oshash; case "MD5": return GQL.HashAlgorithm.Md5; } return GQL.HashAlgorithm.Md5; } if (error) return

{error.message}

; if (loading) return ; return ( <> saveGeneral({ databasePath: v })} /> saveGeneral({ generatedPath: v })} /> saveGeneral({ scrapersPath: v })} /> saveGeneral({ metadataPath: v })} /> saveGeneral({ cachePath: v })} /> saveGeneral({ customPerformerImageLocation: v })} /> saveGeneral({ pythonPath: v })} /> saveGeneral({ backupDirectoryPath: v })} /> saveGeneral({ calculateMD5: v })} /> saveGeneral({ videoFileNamingAlgorithm: translateNamingHash(v) }) } > {namingHashAlgorithms.map((q) => ( ))} saveGeneral({ maxTranscodeSize: translateQuality(v) }) } value={resolutionToString(general.maxTranscodeSize ?? undefined)} > {transcodeQualities.map((q) => ( ))} saveGeneral({ maxStreamingTranscodeSize: translateQuality(v) }) } value={resolutionToString( general.maxStreamingTranscodeSize ?? undefined )} > {transcodeQualities.map((q) => ( ))} saveGeneral({ transcodeInputArgs: v })} value={general.transcodeInputArgs ?? []} /> saveGeneral({ transcodeOutputArgs: v })} value={general.transcodeOutputArgs ?? []} /> saveGeneral({ liveTranscodeInputArgs: v })} value={general.liveTranscodeInputArgs ?? []} /> saveGeneral({ liveTranscodeOutputArgs: v })} value={general.liveTranscodeOutputArgs ?? []} /> saveGeneral({ parallelTasks: v })} /> saveGeneral({ previewPreset: (v as GQL.PreviewPreset) ?? undefined, }) } > {Object.keys(GQL.PreviewPreset).map((p) => ( ))} saveGeneral({ previewAudio: v })} /> id="video-preview-settings" headingID="dialogs.scene_gen.preview_generation_options" value={{ previewExcludeEnd: general.previewExcludeEnd, previewExcludeStart: general.previewExcludeStart, previewSegmentDuration: general.previewSegmentDuration, previewSegments: general.previewSegments, }} onChange={(v) => saveGeneral(v)} renderField={(value, setValue) => ( )} renderValue={() => { return <>; }} /> saveGeneral({ logFile: v })} /> saveGeneral({ logOut: v })} /> saveGeneral({ logLevel: v })} value={general.logLevel ?? undefined} > {["Trace", "Debug", "Info", "Warning", "Error"].map((o) => ( ))} saveGeneral({ logAccess: v })} /> ); };