Add Clean generated files task (#4607)

* Add clean generate task
* Add to library tasks
* Save and read defaults
* Stop handling and logging
* Make filename parsing more robust
This commit is contained in:
WithoutPants
2024-02-23 15:56:00 +11:00
committed by GitHub
parent 4a3ce8b6ec
commit ba1ebba6c0
16 changed files with 994 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ import {
mutateMigrateSceneScreenshots,
mutateMigrateBlobs,
mutateOptimiseDatabase,
mutateCleanGenerated,
} from "src/core/StashService";
import { useToast } from "src/hooks/Toast";
import downloadFile from "src/utils/download";
@@ -29,6 +30,7 @@ import {
faQuestionCircle,
faTrashAlt,
} from "@fortawesome/free-solid-svg-icons";
import { CleanGeneratedDialog } from "./CleanGeneratedDialog";
interface ICleanDialog {
pathSelection?: boolean;
@@ -167,6 +169,7 @@ export const DataManagementTasks: React.FC<IDataManagementTasks> = ({
import: false,
clean: false,
cleanAlert: false,
cleanGenerated: false,
});
const [cleanOptions, setCleanOptions] = useState<GQL.CleanMetadataInput>({
@@ -252,6 +255,27 @@ export const DataManagementTasks: React.FC<IDataManagementTasks> = ({
}
}
async function onCleanGenerated(options: GQL.CleanGeneratedInput) {
try {
await mutateCleanGenerated({
...options,
});
Toast.success(
intl.formatMessage(
{ id: "config.tasks.added_job_to_queue" },
{
operation_name: intl.formatMessage({
id: "actions.clean_generated",
}),
}
)
);
} catch (e) {
Toast.error(e);
}
}
async function onMigrateHashNaming() {
try {
await mutateMigrateHashNaming();
@@ -404,6 +428,17 @@ export const DataManagementTasks: React.FC<IDataManagementTasks> = ({
) : (
dialogOpen.clean
)}
{dialogOpen.cleanGenerated && (
<CleanGeneratedDialog
onClose={(options) => {
if (options) {
onCleanGenerated(options);
}
setDialogOpen({ cleanGenerated: false });
}}
/>
)}
<SettingSection headingID="config.tasks.maintenance">
<div className="setting-group">
@@ -439,6 +474,21 @@ export const DataManagementTasks: React.FC<IDataManagementTasks> = ({
/>
</div>
<div className="setting-group">
<Setting
heading={<FormattedMessage id="actions.clean_generated" />}
subHeadingID="config.tasks.clean_generated.description"
>
<Button
variant="danger"
type="submit"
onClick={() => setDialogOpen({ cleanGenerated: true })}
>
<FormattedMessage id="actions.clean_generated" />
</Button>
</Setting>
</div>
<Setting
headingID="actions.optimise_database"
subHeading={