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:
7dJx1qP
2021-10-28 01:45:44 -04:00
committed by GitHub
parent 27cdefbb10
commit 96fce90cc3
12 changed files with 288 additions and 34 deletions

View File

@@ -4,7 +4,8 @@ import { useScenesDestroy } from "src/core/StashService";
import * as GQL from "src/core/generated-graphql";
import { Modal } from "src/components/Shared";
import { useToast } from "src/hooks";
import { useIntl } from "react-intl";
import { ConfigurationContext } from "src/hooks/Config";
import { FormattedMessage, useIntl } from "react-intl";
interface IDeleteSceneDialogProps {
selected: GQL.SlimSceneDataFragment[];
@@ -31,8 +32,14 @@ export const DeleteScenesDialog: React.FC<IDeleteSceneDialogProps> = (
{ count: props.selected.length, singularEntity, pluralEntity }
);
const [deleteFile, setDeleteFile] = useState<boolean>(false);
const [deleteGenerated, setDeleteGenerated] = useState<boolean>(true);
const { configuration: config } = React.useContext(ConfigurationContext);
const [deleteFile, setDeleteFile] = useState<boolean>(
config?.defaults.deleteFile ?? false
);
const [deleteGenerated, setDeleteGenerated] = useState<boolean>(
config?.defaults.deleteGenerated ?? true
);
const Toast = useToast();
const [deleteScene] = useScenesDestroy(getScenesDeleteInput());
@@ -60,6 +67,42 @@ export const DeleteScenesDialog: React.FC<IDeleteSceneDialogProps> = (
props.onClose(true);
}
function maybeRenderDeleteFileAlert() {
if (!deleteFile) {
return;
}
return (
<div className="delete-dialog alert alert-danger text-break">
<p className="font-weight-bold">
<FormattedMessage
values={{
count: props.selected.length,
singularEntity: intl.formatMessage({ id: "file" }),
pluralEntity: intl.formatMessage({ id: "files" }),
}}
id="dialogs.delete_alert"
/>
</p>
<ul>
{props.selected.slice(0, 5).map((s) => (
<li key={s.path}>{s.path}</li>
))}
{props.selected.length > 5 && (
<FormattedMessage
values={{
count: props.selected.length - 5,
singularEntity: intl.formatMessage({ id: "file" }),
pluralEntity: intl.formatMessage({ id: "files" }),
}}
id="dialogs.delete_object_overflow"
/>
)}
</ul>
</div>
);
}
return (
<Modal
show
@@ -78,6 +121,7 @@ export const DeleteScenesDialog: React.FC<IDeleteSceneDialogProps> = (
isRunning={isDeleting}
>
<p>{message}</p>
{maybeRenderDeleteFileAlert()}
<Form>
<Form.Check
id="delete-file"