mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
Generate content for specific scenes (#672)
* Add UI dialog for scene(s) * Move preview preset to config
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import React from "react";
|
||||
import React, { useState } from "react";
|
||||
import _ from "lodash";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import {
|
||||
@@ -9,11 +9,13 @@ import { queryFindScenes } from "src/core/StashService";
|
||||
import { useScenesList } from "src/hooks";
|
||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||
import { DisplayMode } from "src/models/list-filter/types";
|
||||
import { showWhenSelected } from "src/hooks/ListHook";
|
||||
import { WallPanel } from "../Wall/WallPanel";
|
||||
import { SceneCard } from "./SceneCard";
|
||||
import { SceneListTable } from "./SceneListTable";
|
||||
import { EditScenesDialog } from "./EditScenesDialog";
|
||||
import { DeleteScenesDialog } from "./DeleteScenesDialog";
|
||||
import { SceneGenerateDialog } from "./SceneGenerateDialog";
|
||||
|
||||
interface ISceneList {
|
||||
subComponent?: boolean;
|
||||
@@ -25,11 +27,18 @@ export const SceneList: React.FC<ISceneList> = ({
|
||||
filterHook,
|
||||
}) => {
|
||||
const history = useHistory();
|
||||
const [isGenerateDialogOpen, setIsGenerateDialogOpen] = useState(false);
|
||||
|
||||
const otherOperations = [
|
||||
{
|
||||
text: "Play Random",
|
||||
onClick: playRandom,
|
||||
},
|
||||
{
|
||||
text: "Generate...",
|
||||
onClick: generate,
|
||||
isDisplayed: showWhenSelected,
|
||||
},
|
||||
];
|
||||
|
||||
const addKeybinds = (
|
||||
@@ -82,6 +91,25 @@ export const SceneList: React.FC<ISceneList> = ({
|
||||
}
|
||||
}
|
||||
|
||||
async function generate() {
|
||||
setIsGenerateDialogOpen(true);
|
||||
}
|
||||
|
||||
function maybeRenderSceneGenerateDialog(selectedIds: Set<string>) {
|
||||
if (isGenerateDialogOpen) {
|
||||
return (
|
||||
<>
|
||||
<SceneGenerateDialog
|
||||
selectedIds={Array.from(selectedIds.values())}
|
||||
onClose={() => {
|
||||
setIsGenerateDialogOpen(false);
|
||||
}}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function renderEditScenesDialog(
|
||||
selectedScenes: SlimSceneDataFragment[],
|
||||
onClose: (applied: boolean) => void
|
||||
@@ -123,7 +151,7 @@ export const SceneList: React.FC<ISceneList> = ({
|
||||
);
|
||||
}
|
||||
|
||||
function renderContent(
|
||||
function renderScenes(
|
||||
result: FindScenesQueryResult,
|
||||
filter: ListFilterModel,
|
||||
selectedIds: Set<string>,
|
||||
@@ -149,5 +177,19 @@ export const SceneList: React.FC<ISceneList> = ({
|
||||
}
|
||||
}
|
||||
|
||||
function renderContent(
|
||||
result: FindScenesQueryResult,
|
||||
filter: ListFilterModel,
|
||||
selectedIds: Set<string>,
|
||||
zoomIndex: number
|
||||
) {
|
||||
return (
|
||||
<>
|
||||
{maybeRenderSceneGenerateDialog(selectedIds)}
|
||||
{renderScenes(result, filter, selectedIds, zoomIndex)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
return listData.template;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user