mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 20:34:37 +03:00
Add delete file and generated files by default config options (#1852)
* add delete file and generated files by default config options * add alert message with files to be deleted Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
@@ -2,10 +2,15 @@ import React, { useEffect, useState } from "react";
|
||||
import { Button, Form } from "react-bootstrap";
|
||||
import { useIntl } from "react-intl";
|
||||
import { DurationInput, LoadingIndicator } from "src/components/Shared";
|
||||
import { useConfiguration, useConfigureInterface } from "src/core/StashService";
|
||||
import {
|
||||
useConfiguration,
|
||||
useConfigureDefaults,
|
||||
useConfigureInterface,
|
||||
} from "src/core/StashService";
|
||||
import { useToast } from "src/hooks";
|
||||
import * as GQL from "src/core/generated-graphql";
|
||||
import { CheckboxGroup } from "./CheckboxGroup";
|
||||
import { withoutTypename } from "src/utils";
|
||||
|
||||
const allMenuItems = [
|
||||
{ id: "scenes", label: "Scenes" },
|
||||
@@ -39,6 +44,10 @@ export const SettingsInterfacePanel: React.FC = () => {
|
||||
const [language, setLanguage] = useState<string>("en");
|
||||
const [handyKey, setHandyKey] = useState<string>();
|
||||
const [funscriptOffset, setFunscriptOffset] = useState<number>(0);
|
||||
const [deleteFileDefault, setDeleteFileDefault] = useState<boolean>(false);
|
||||
const [deleteGeneratedDefault, setDeleteGeneratedDefault] = useState<boolean>(
|
||||
true
|
||||
);
|
||||
const [
|
||||
disableDropdownCreate,
|
||||
setDisableDropdownCreate,
|
||||
@@ -61,35 +70,51 @@ export const SettingsInterfacePanel: React.FC = () => {
|
||||
disableDropdownCreate,
|
||||
});
|
||||
|
||||
const [updateDefaultsConfig] = useConfigureDefaults();
|
||||
|
||||
useEffect(() => {
|
||||
const iCfg = config?.configuration?.interface;
|
||||
setMenuItemIds(iCfg?.menuItems ?? allMenuItems.map((item) => item.id));
|
||||
setSoundOnPreview(iCfg?.soundOnPreview ?? true);
|
||||
setWallShowTitle(iCfg?.wallShowTitle ?? true);
|
||||
setWallPlayback(iCfg?.wallPlayback ?? "video");
|
||||
setMaximumLoopDuration(iCfg?.maximumLoopDuration ?? 0);
|
||||
setAutostartVideo(iCfg?.autostartVideo ?? false);
|
||||
setShowStudioAsText(iCfg?.showStudioAsText ?? false);
|
||||
setCSS(iCfg?.css ?? "");
|
||||
setCSSEnabled(iCfg?.cssEnabled ?? false);
|
||||
setLanguage(iCfg?.language ?? "en-US");
|
||||
setSlideshowDelay(iCfg?.slideshowDelay ?? 5000);
|
||||
setHandyKey(iCfg?.handyKey ?? "");
|
||||
setFunscriptOffset(iCfg?.funscriptOffset ?? 0);
|
||||
setDisableDropdownCreate({
|
||||
performer: iCfg?.disabledDropdownCreate.performer,
|
||||
studio: iCfg?.disabledDropdownCreate.studio,
|
||||
tag: iCfg?.disabledDropdownCreate.tag,
|
||||
});
|
||||
if (config) {
|
||||
const { interface: iCfg, defaults } = config.configuration;
|
||||
setMenuItemIds(iCfg.menuItems ?? allMenuItems.map((item) => item.id));
|
||||
setSoundOnPreview(iCfg.soundOnPreview ?? true);
|
||||
setWallShowTitle(iCfg.wallShowTitle ?? true);
|
||||
setWallPlayback(iCfg.wallPlayback ?? "video");
|
||||
setMaximumLoopDuration(iCfg.maximumLoopDuration ?? 0);
|
||||
setAutostartVideo(iCfg.autostartVideo ?? false);
|
||||
setShowStudioAsText(iCfg.showStudioAsText ?? false);
|
||||
setCSS(iCfg.css ?? "");
|
||||
setCSSEnabled(iCfg.cssEnabled ?? false);
|
||||
setLanguage(iCfg.language ?? "en-US");
|
||||
setSlideshowDelay(iCfg.slideshowDelay ?? 5000);
|
||||
setHandyKey(iCfg.handyKey ?? "");
|
||||
setFunscriptOffset(iCfg.funscriptOffset ?? 0);
|
||||
setDisableDropdownCreate({
|
||||
performer: iCfg.disabledDropdownCreate.performer,
|
||||
studio: iCfg.disabledDropdownCreate.studio,
|
||||
tag: iCfg.disabledDropdownCreate.tag,
|
||||
});
|
||||
|
||||
setDeleteFileDefault(defaults.deleteFile ?? false);
|
||||
setDeleteGeneratedDefault(defaults.deleteGenerated ?? true);
|
||||
}
|
||||
}, [config]);
|
||||
|
||||
async function onSave() {
|
||||
const prevCSS = config?.configuration.interface.css;
|
||||
const prevCSSenabled = config?.configuration.interface.cssEnabled;
|
||||
try {
|
||||
if (config?.configuration.defaults) {
|
||||
await updateDefaultsConfig({
|
||||
variables: {
|
||||
input: {
|
||||
...withoutTypename(config?.configuration.defaults),
|
||||
deleteFile: deleteFileDefault,
|
||||
deleteGenerated: deleteGeneratedDefault,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
const result = await updateInterfaceConfig();
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(result);
|
||||
|
||||
// Force refetch of custom css if it was changed
|
||||
if (
|
||||
@@ -389,6 +414,38 @@ export const SettingsInterfacePanel: React.FC = () => {
|
||||
</Form.Text>
|
||||
</Form.Group>
|
||||
|
||||
<Form.Group>
|
||||
<h5>
|
||||
{intl.formatMessage({ id: "config.ui.delete_options.heading" })}
|
||||
</h5>
|
||||
<Form.Check
|
||||
id="delete-file-default"
|
||||
checked={deleteFileDefault}
|
||||
label={intl.formatMessage({
|
||||
id: "config.ui.delete_options.options.delete_file",
|
||||
})}
|
||||
onChange={() => {
|
||||
setDeleteFileDefault(!deleteFileDefault);
|
||||
}}
|
||||
/>
|
||||
<Form.Check
|
||||
id="delete-generated-default"
|
||||
checked={deleteGeneratedDefault}
|
||||
label={intl.formatMessage({
|
||||
id:
|
||||
"config.ui.delete_options.options.delete_generated_supporting_files",
|
||||
})}
|
||||
onChange={() => {
|
||||
setDeleteGeneratedDefault(!deleteGeneratedDefault);
|
||||
}}
|
||||
/>
|
||||
<Form.Text className="text-muted">
|
||||
{intl.formatMessage({
|
||||
id: "config.ui.delete_options.description",
|
||||
})}
|
||||
</Form.Text>
|
||||
</Form.Group>
|
||||
|
||||
<hr />
|
||||
<Button variant="primary" onClick={() => onSave()}>
|
||||
{intl.formatMessage({ id: "actions.save" })}
|
||||
|
||||
Reference in New Issue
Block a user