Include stash-ids when creating objects from scrape dialog (#6269)

* Filter out empty aliases
This commit is contained in:
WithoutPants 2025-11-14 12:57:34 +11:00 committed by GitHub
parent 957c4fe1b5
commit d743787bb3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 65 additions and 10 deletions

View file

@ -133,7 +133,8 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = ({
const { tags, newTags, scrapedTagsRow } = useScrapedTags(
sceneTags,
scraped.tags
scraped.tags,
endpoint
);
const [details, setDetails] = useState<ScrapeResult<string>>(
@ -148,6 +149,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = ({
scrapeResult: studio,
setScrapeResult: setStudio,
setNewObject: setNewStudio,
endpoint,
});
const createNewPerformer = useCreateScrapedPerformer({
@ -155,6 +157,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = ({
setScrapeResult: setPerformers,
newObjects: newPerformers,
setNewObjects: setNewPerformers,
endpoint,
});
const createNewGroup = useCreateScrapedGroup({
@ -162,6 +165,7 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = ({
setScrapeResult: setGroups,
newObjects: newGroups,
setNewObjects: setNewGroups,
endpoint,
});
const intl = useIntl();

View file

@ -46,6 +46,7 @@ interface IUseCreateNewStudioProps {
scrapeResult: ObjectScrapeResult<GQL.ScrapedStudio>
) => void;
setNewObject: (newObject: GQL.ScrapedStudio | undefined) => void;
endpoint?: string;
}
export function useCreateScrapedStudio(props: IUseCreateNewStudioProps) {
@ -54,12 +55,33 @@ export function useCreateScrapedStudio(props: IUseCreateNewStudioProps) {
const { scrapeResult, setScrapeResult, setNewObject } = props;
async function createNewStudio(toCreate: GQL.ScrapedStudio) {
const input: GQL.StudioCreateInput = {
name: toCreate.name,
urls: toCreate.urls,
aliases:
toCreate.aliases
?.split(",")
.map((a) => a.trim())
.filter((a) => a) || [],
details: toCreate.details,
image: toCreate.image,
tag_ids: (toCreate.tags ?? [])
.filter((t) => t.stored_id)
.map((t) => t.stored_id!),
};
if (props.endpoint && toCreate.remote_site_id) {
input.stash_ids = [
{
endpoint: props.endpoint,
stash_id: toCreate.remote_site_id,
},
];
}
const result = await createStudio({
variables: {
input: {
name: toCreate.name,
url: toCreate.url,
},
input,
},
});
@ -81,6 +103,7 @@ interface IUseCreateNewObjectProps<T> {
setScrapeResult: (scrapeResult: ScrapeResult<T[]>) => void;
newObjects: T[];
setNewObjects: (newObject: T[]) => void;
endpoint?: string;
}
export function useCreateScrapedPerformer(
@ -91,7 +114,7 @@ export function useCreateScrapedPerformer(
const { scrapeResult, setScrapeResult, newObjects, setNewObjects } = props;
async function createNewPerformer(toCreate: GQL.ScrapedPerformer) {
const input = scrapedPerformerToCreateInput(toCreate);
const input = scrapedPerformerToCreateInput(toCreate, props.endpoint);
const result = await createPerformer({
variables: { input },
@ -168,7 +191,18 @@ export function useCreateScrapedTag(
const { scrapeResult, setScrapeResult, newObjects, setNewObjects } = props;
async function createNewTag(toCreate: GQL.ScrapedTag) {
const input: GQL.TagCreateInput = { name: toCreate.name ?? "" };
const input: GQL.TagCreateInput = {
name: toCreate.name ?? "",
};
if (props.endpoint && toCreate.remote_site_id) {
input.stash_ids = [
{
endpoint: props.endpoint,
stash_id: toCreate.remote_site_id,
},
];
}
const result = await createTag({
variables: { input },

View file

@ -9,7 +9,8 @@ import { ScrapedTagsRow } from "./ScrapedObjectsRow";
export function useScrapedTags(
existingTags: Tag[],
scrapedTags?: GQL.Maybe<GQL.ScrapedTag[]>
scrapedTags?: GQL.Maybe<GQL.ScrapedTag[]>,
endpoint?: string
) {
const intl = useIntl();
const [tags, setTags] = useState<ObjectListScrapeResult<GQL.ScrapedTag>>(
@ -33,6 +34,7 @@ export function useScrapedTags(
setScrapeResult: setTags,
newObjects: newTags,
setNewObjects: setNewTags,
endpoint,
});
const scrapedTagsRow = (

View file

@ -84,9 +84,14 @@ export function sortPerformers<T extends IPerformerFragment>(performers: T[]) {
}
export const scrapedPerformerToCreateInput = (
toCreate: GQL.ScrapedPerformer
toCreate: GQL.ScrapedPerformer,
endpoint?: string
) => {
const aliases = toCreate.aliases?.split(",").map((a) => a.trim());
const aliases =
toCreate.aliases
?.split(",")
.map((a) => a.trim())
.filter((a) => a) || [];
const input: GQL.PerformerCreateInput = {
name: toCreate.name ?? "",
@ -118,5 +123,15 @@ export const scrapedPerformerToCreateInput = (
: undefined,
circumcised: stringToCircumcised(toCreate.circumcised),
};
if (endpoint && toCreate.remote_site_id) {
input.stash_ids = [
{
endpoint,
stash_id: toCreate.remote_site_id,
},
];
}
return input;
};