diff --git a/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryScrapeDialog.tsx b/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryScrapeDialog.tsx index 01ad1d3071d..1daa2f5e756 100644 --- a/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryScrapeDialog.tsx +++ b/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryScrapeDialog.tsx @@ -9,6 +9,7 @@ import { } from "src/components/Shared/ScrapeDialog/ScrapeDialog"; import { ObjectListScrapeResult, + ObjectScrapeResult, ScrapeResult, } from "src/components/Shared/ScrapeDialog/scrapeResult"; import { @@ -66,8 +67,8 @@ export const GalleryScrapeDialog: React.FC = ({ const [photographer, setPhotographer] = useState>( new ScrapeResult(gallery.photographer, scraped.photographer) ); - const [studio, setStudio] = useState>( - new ScrapeResult( + const [studio, setStudio] = useState>( + new ObjectScrapeResult( galleryStudio ? { stored_id: galleryStudio.id, diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/SceneQueryModal.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/SceneQueryModal.tsx index dd9e7592a25..a11f85028bd 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/SceneQueryModal.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/SceneQueryModal.tsx @@ -44,11 +44,7 @@ const SceneSearchResultDetails: React.FC = ({ {scene.tags?.map((tag) => ( - + {tag.name} ))} diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/SceneScrapeDialog.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/SceneScrapeDialog.tsx index c016214d0e4..e70f1b6102f 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/SceneScrapeDialog.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/SceneScrapeDialog.tsx @@ -14,6 +14,7 @@ import { Performer } from "src/components/Performers/PerformerSelect"; import { IHasStoredID, sortStoredIdObjects } from "src/utils/data"; import { ObjectListScrapeResult, + ObjectScrapeResult, ScrapeResult, } from "src/components/Shared/ScrapeDialog/scrapeResult"; import { @@ -73,8 +74,8 @@ export const SceneScrapeDialog: React.FC = ({ const [director, setDirector] = useState>( new ScrapeResult(scene.director, scraped.director) ); - const [studio, setStudio] = useState>( - new ScrapeResult( + const [studio, setStudio] = useState>( + new ObjectScrapeResult( sceneStudio ? { stored_id: sceneStudio.id, diff --git a/ui/v2.5/src/components/Shared/ScrapeDialog/ScrapedObjectsRow.tsx b/ui/v2.5/src/components/Shared/ScrapeDialog/ScrapedObjectsRow.tsx index 1bbc1510ba5..50a1952337a 100644 --- a/ui/v2.5/src/components/Shared/ScrapeDialog/ScrapedObjectsRow.tsx +++ b/ui/v2.5/src/components/Shared/ScrapeDialog/ScrapedObjectsRow.tsx @@ -6,14 +6,17 @@ import { IHasName, } from "src/components/Shared/ScrapeDialog/ScrapeDialog"; import { PerformerSelect } from "src/components/Performers/PerformerSelect"; -import { ScrapeResult } from "src/components/Shared/ScrapeDialog/scrapeResult"; +import { + ObjectScrapeResult, + ScrapeResult, +} from "src/components/Shared/ScrapeDialog/scrapeResult"; import { TagSelect } from "src/components/Tags/TagSelect"; import { StudioSelect } from "src/components/Studios/StudioSelect"; interface IScrapedStudioRow { title: string; - result: ScrapeResult; - onChange: (value: ScrapeResult) => void; + result: ObjectScrapeResult; + onChange: (value: ObjectScrapeResult) => void; newStudio?: GQL.ScrapedStudio; onCreateNew?: (value: GQL.ScrapedStudio) => void; } @@ -26,7 +29,7 @@ export const ScrapedStudioRow: React.FC = ({ onCreateNew, }) => { function renderScrapedStudio( - scrapeResult: ScrapeResult, + scrapeResult: ObjectScrapeResult, isNew?: boolean, onChangeFn?: (value: GQL.ScrapedStudio) => void ) { diff --git a/ui/v2.5/src/components/Shared/ScrapeDialog/createObjects.ts b/ui/v2.5/src/components/Shared/ScrapeDialog/createObjects.ts index c2bd205ab00..faa378d114d 100644 --- a/ui/v2.5/src/components/Shared/ScrapeDialog/createObjects.ts +++ b/ui/v2.5/src/components/Shared/ScrapeDialog/createObjects.ts @@ -6,7 +6,7 @@ import { useStudioCreate, useTagCreate, } from "src/core/StashService"; -import { ScrapeResult } from "./scrapeResult"; +import { ObjectScrapeResult, ScrapeResult } from "./scrapeResult"; import { useIntl } from "react-intl"; import { scrapedPerformerToCreateInput } from "src/core/performers"; import { scrapedMovieToCreateInput } from "src/core/movies"; @@ -41,8 +41,10 @@ function useCreateObject( } interface IUseCreateNewStudioProps { - scrapeResult: ScrapeResult; - setScrapeResult: (scrapeResult: ScrapeResult) => void; + scrapeResult: ObjectScrapeResult; + setScrapeResult: ( + scrapeResult: ObjectScrapeResult + ) => void; setNewObject: (newObject: GQL.ScrapedStudio | undefined) => void; } diff --git a/ui/v2.5/src/components/Shared/ScrapeDialog/scrapeResult.ts b/ui/v2.5/src/components/Shared/ScrapeDialog/scrapeResult.ts index dd4662763b6..b9b88cef009 100644 --- a/ui/v2.5/src/components/Shared/ScrapeDialog/scrapeResult.ts +++ b/ui/v2.5/src/components/Shared/ScrapeDialog/scrapeResult.ts @@ -106,6 +106,23 @@ export class ObjectListScrapeResult< } } +export class ObjectScrapeResult< + T extends IHasStoredID +> extends ScrapeResult { + public constructor( + originalValue?: T | null, + newValue?: T | null, + useNewValue?: boolean + ) { + super( + originalValue, + newValue, + useNewValue, + (o1, o2) => o1?.stored_id === o2?.stored_id + ); + } +} + export function hasScrapedValues(values: { scraped: boolean }[]): boolean { return values.some((r) => r.scraped); }