-
- {props.scene.title ?? TextUtils.fileNameFromPath(props.scene.path)}
-
-
- {props.scene.date ? (
-
-
-
- ) : undefined}
- {props.scene.rating ? (
-
- Rating:
-
- ) : (
- ""
- )}
- {props.scene.file.height && (
- Resolution: {TextUtils.resolution(props.scene.file.height)}
- )}
- {renderDetails()}
- {renderTags()}
-
-
+ <>
+
+
+
+
+ {props.scene.title ??
+ TextUtils.fileNameFromPath(props.scene.path)}
+
+
+ {props.scene.date ? (
+
+
+
+ ) : undefined}
+ {props.scene.rating ? (
+
+ Rating:
+
+ ) : (
+ ""
+ )}
+ {props.scene.file.height && (
+
Resolution: {TextUtils.resolution(props.scene.file.height)}
+ )}
+
{props.scene.studio && (
-
-

-
+
+
+

+
+
)}
-
+
+
+ {renderDetails()}
+ {renderTags()}
+ {renderPerformers()}
+
+
+ >
);
};
diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx
index 71ab839a9..6eda1a6e5 100644
--- a/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx
+++ b/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx
@@ -1,14 +1,20 @@
/* eslint-disable react/no-this-in-sfc */
import React, { useEffect, useState } from "react";
-import { Button, Dropdown, DropdownButton, Form, Table } from "react-bootstrap";
+import {
+ Button,
+ Dropdown,
+ DropdownButton,
+ Form,
+ Col,
+ Row,
+} from "react-bootstrap";
import * as GQL from "src/core/generated-graphql";
import {
queryScrapeScene,
queryScrapeSceneURL,
useListSceneScrapers,
useSceneUpdate,
- useSceneDestroy,
mutateReloadScrapers,
} from "src/core/StashService";
import {
@@ -16,13 +22,12 @@ import {
TagSelect,
StudioSelect,
SceneGallerySelect,
- Modal,
Icon,
LoadingIndicator,
ImageInput,
} from "src/components/Shared";
import { useToast } from "src/hooks";
-import { ImageUtils, TableUtils } from "src/utils";
+import { ImageUtils, FormUtils, EditableTextUtils } from "src/utils";
import { MovieSelect } from "src/components/Shared/Select";
import { SceneMovieTable, MovieSceneIndexMap } from "./SceneMovieTable";
import { RatingStars } from "./RatingStars";
@@ -53,17 +58,12 @@ export const SceneEditPanel: React.FC
= (props: IProps) => {
const Scrapers = useListSceneScrapers();
const [queryableScrapers, setQueryableScrapers] = useState([]);
- const [isDeleteAlertOpen, setIsDeleteAlertOpen] = useState(false);
- const [deleteFile, setDeleteFile] = useState(false);
- const [deleteGenerated, setDeleteGenerated] = useState(true);
-
const [coverImagePreview, setCoverImagePreview] = useState();
// Network state
const [isLoading, setIsLoading] = useState(true);
const [updateScene] = useSceneUpdate(getSceneInput());
- const [deleteScene] = useSceneDestroy(getSceneDeleteInput());
useEffect(() => {
const newQueryableScrapers = (
@@ -187,27 +187,6 @@ export const SceneEditPanel: React.FC = (props: IProps) => {
setIsLoading(false);
}
- function getSceneDeleteInput(): GQL.SceneDestroyInput {
- return {
- id: props.scene.id,
- delete_file: deleteFile,
- delete_generated: deleteGenerated,
- };
- }
-
- async function onDelete() {
- setIsDeleteAlertOpen(false);
- setIsLoading(true);
- try {
- await deleteScene();
- Toast.success({ content: "Deleted scene" });
- } catch (e) {
- Toast.error(e);
- }
- setIsLoading(false);
- props.onDelete();
- }
-
function renderTableMovies() {
return (
= (props: IProps) => {
);
}
- function renderDeleteAlert() {
- return (
- setIsDeleteAlertOpen(false), text: "Cancel" }}
- >
-
- Are you sure you want to delete this scene? Unless the file is also
- deleted, this scene will be re-added when scan is performed.
-
- setDeleteFile(!deleteFile)}
- />
- setDeleteGenerated(!deleteGenerated)}
- />
-
-
- );
- }
-
function onImageLoad(imageData: string) {
setCoverImagePreview(imageData);
setCoverImage(imageData);
@@ -402,7 +352,7 @@ export const SceneEditPanel: React.FC = (props: IProps) => {
return undefined;
}
return (
-