mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Unify scrape refactor (#1630)
* Unify scraped types * Make name fields optional * Unify single scrape queries * Change UI to use new interfaces * Add multi scrape interfaces * Use images instead of image
This commit is contained in:
@@ -48,8 +48,8 @@ function renderScrapedStudioRow(
|
||||
title: string,
|
||||
result: ScrapeResult<string>,
|
||||
onChange: (value: ScrapeResult<string>) => void,
|
||||
newStudio?: GQL.ScrapedSceneStudio,
|
||||
onCreateNew?: (value: GQL.ScrapedSceneStudio) => void
|
||||
newStudio?: GQL.ScrapedStudio,
|
||||
onCreateNew?: (value: GQL.ScrapedStudio) => void
|
||||
) {
|
||||
return (
|
||||
<ScrapeDialogRow
|
||||
@@ -95,9 +95,14 @@ function renderScrapedPerformersRow(
|
||||
title: string,
|
||||
result: ScrapeResult<string[]>,
|
||||
onChange: (value: ScrapeResult<string[]>) => void,
|
||||
newPerformers: GQL.ScrapedScenePerformer[],
|
||||
onCreateNew?: (value: GQL.ScrapedScenePerformer) => void
|
||||
newPerformers: GQL.ScrapedPerformer[],
|
||||
onCreateNew?: (value: GQL.ScrapedPerformer) => void
|
||||
) {
|
||||
const performersCopy = newPerformers.map((p) => {
|
||||
const name: string = p.name ?? "";
|
||||
return { ...p, name };
|
||||
});
|
||||
|
||||
return (
|
||||
<ScrapeDialogRow
|
||||
title={title}
|
||||
@@ -109,7 +114,7 @@ function renderScrapedPerformersRow(
|
||||
)
|
||||
}
|
||||
onChange={onChange}
|
||||
newValues={newPerformers}
|
||||
newValues={performersCopy}
|
||||
onCreateNew={onCreateNew}
|
||||
/>
|
||||
);
|
||||
@@ -142,9 +147,14 @@ function renderScrapedMoviesRow(
|
||||
title: string,
|
||||
result: ScrapeResult<string[]>,
|
||||
onChange: (value: ScrapeResult<string[]>) => void,
|
||||
newMovies: GQL.ScrapedSceneMovie[],
|
||||
onCreateNew?: (value: GQL.ScrapedSceneMovie) => void
|
||||
newMovies: GQL.ScrapedMovie[],
|
||||
onCreateNew?: (value: GQL.ScrapedMovie) => void
|
||||
) {
|
||||
const moviesCopy = newMovies.map((p) => {
|
||||
const name: string = p.name ?? "";
|
||||
return { ...p, name };
|
||||
});
|
||||
|
||||
return (
|
||||
<ScrapeDialogRow
|
||||
title={title}
|
||||
@@ -156,7 +166,7 @@ function renderScrapedMoviesRow(
|
||||
)
|
||||
}
|
||||
onChange={onChange}
|
||||
newValues={newMovies}
|
||||
newValues={moviesCopy}
|
||||
onCreateNew={onCreateNew}
|
||||
/>
|
||||
);
|
||||
@@ -189,8 +199,8 @@ function renderScrapedTagsRow(
|
||||
title: string,
|
||||
result: ScrapeResult<string[]>,
|
||||
onChange: (value: ScrapeResult<string[]>) => void,
|
||||
newTags: GQL.ScrapedSceneTag[],
|
||||
onCreateNew?: (value: GQL.ScrapedSceneTag) => void
|
||||
newTags: GQL.ScrapedTag[],
|
||||
onCreateNew?: (value: GQL.ScrapedTag) => void
|
||||
) {
|
||||
return (
|
||||
<ScrapeDialogRow
|
||||
@@ -238,9 +248,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = (
|
||||
props.scraped.studio?.stored_id
|
||||
)
|
||||
);
|
||||
const [newStudio, setNewStudio] = useState<
|
||||
GQL.ScrapedSceneStudio | undefined
|
||||
>(
|
||||
const [newStudio, setNewStudio] = useState<GQL.ScrapedStudio | undefined>(
|
||||
props.scraped.studio && !props.scraped.studio.stored_id
|
||||
? props.scraped.studio
|
||||
: undefined
|
||||
@@ -290,9 +298,9 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = (
|
||||
mapStoredIdObjects(props.scraped.performers ?? undefined)
|
||||
)
|
||||
);
|
||||
const [newPerformers, setNewPerformers] = useState<
|
||||
GQL.ScrapedScenePerformer[]
|
||||
>(props.scraped.performers?.filter((t) => !t.stored_id) ?? []);
|
||||
const [newPerformers, setNewPerformers] = useState<GQL.ScrapedPerformer[]>(
|
||||
props.scraped.performers?.filter((t) => !t.stored_id) ?? []
|
||||
);
|
||||
|
||||
const [movies, setMovies] = useState<ScrapeResult<string[]>>(
|
||||
new ScrapeResult<string[]>(
|
||||
@@ -300,7 +308,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = (
|
||||
mapStoredIdObjects(props.scraped.movies ?? undefined)
|
||||
)
|
||||
);
|
||||
const [newMovies, setNewMovies] = useState<GQL.ScrapedSceneMovie[]>(
|
||||
const [newMovies, setNewMovies] = useState<GQL.ScrapedMovie[]>(
|
||||
props.scraped.movies?.filter((t) => !t.stored_id) ?? []
|
||||
);
|
||||
|
||||
@@ -310,7 +318,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = (
|
||||
mapStoredIdObjects(props.scraped.tags ?? undefined)
|
||||
)
|
||||
);
|
||||
const [newTags, setNewTags] = useState<GQL.ScrapedSceneTag[]>(
|
||||
const [newTags, setNewTags] = useState<GQL.ScrapedTag[]>(
|
||||
props.scraped.tags?.filter((t) => !t.stored_id) ?? []
|
||||
);
|
||||
|
||||
@@ -339,7 +347,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = (
|
||||
return <></>;
|
||||
}
|
||||
|
||||
async function createNewStudio(toCreate: GQL.ScrapedSceneStudio) {
|
||||
async function createNewStudio(toCreate: GQL.ScrapedStudio) {
|
||||
try {
|
||||
const result = await createStudio({
|
||||
variables: {
|
||||
@@ -366,7 +374,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = (
|
||||
}
|
||||
}
|
||||
|
||||
async function createNewPerformer(toCreate: GQL.ScrapedScenePerformer) {
|
||||
async function createNewPerformer(toCreate: GQL.ScrapedPerformer) {
|
||||
const input = makePerformerCreateInput(toCreate);
|
||||
|
||||
try {
|
||||
@@ -401,7 +409,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = (
|
||||
}
|
||||
}
|
||||
|
||||
async function createNewMovie(toCreate: GQL.ScrapedSceneMovie) {
|
||||
async function createNewMovie(toCreate: GQL.ScrapedMovie) {
|
||||
let movieInput: GQL.MovieCreateInput = { name: "" };
|
||||
try {
|
||||
movieInput = Object.assign(movieInput, toCreate);
|
||||
@@ -450,7 +458,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = (
|
||||
}
|
||||
}
|
||||
|
||||
async function createNewTag(toCreate: GQL.ScrapedSceneTag) {
|
||||
async function createNewTag(toCreate: GQL.ScrapedTag) {
|
||||
const tagInput: GQL.TagCreateInput = { name: toCreate.name ?? "" };
|
||||
try {
|
||||
const result = await createTag({
|
||||
|
||||
Reference in New Issue
Block a user