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

View file

@ -46,6 +46,7 @@ interface IUseCreateNewStudioProps {
scrapeResult: ObjectScrapeResult<GQL.ScrapedStudio> scrapeResult: ObjectScrapeResult<GQL.ScrapedStudio>
) => void; ) => void;
setNewObject: (newObject: GQL.ScrapedStudio | undefined) => void; setNewObject: (newObject: GQL.ScrapedStudio | undefined) => void;
endpoint?: string;
} }
export function useCreateScrapedStudio(props: IUseCreateNewStudioProps) { export function useCreateScrapedStudio(props: IUseCreateNewStudioProps) {
@ -54,12 +55,33 @@ export function useCreateScrapedStudio(props: IUseCreateNewStudioProps) {
const { scrapeResult, setScrapeResult, setNewObject } = props; const { scrapeResult, setScrapeResult, setNewObject } = props;
async function createNewStudio(toCreate: GQL.ScrapedStudio) { 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({ const result = await createStudio({
variables: { variables: {
input: { input,
name: toCreate.name,
url: toCreate.url,
},
}, },
}); });
@ -81,6 +103,7 @@ interface IUseCreateNewObjectProps<T> {
setScrapeResult: (scrapeResult: ScrapeResult<T[]>) => void; setScrapeResult: (scrapeResult: ScrapeResult<T[]>) => void;
newObjects: T[]; newObjects: T[];
setNewObjects: (newObject: T[]) => void; setNewObjects: (newObject: T[]) => void;
endpoint?: string;
} }
export function useCreateScrapedPerformer( export function useCreateScrapedPerformer(
@ -91,7 +114,7 @@ export function useCreateScrapedPerformer(
const { scrapeResult, setScrapeResult, newObjects, setNewObjects } = props; const { scrapeResult, setScrapeResult, newObjects, setNewObjects } = props;
async function createNewPerformer(toCreate: GQL.ScrapedPerformer) { async function createNewPerformer(toCreate: GQL.ScrapedPerformer) {
const input = scrapedPerformerToCreateInput(toCreate); const input = scrapedPerformerToCreateInput(toCreate, props.endpoint);
const result = await createPerformer({ const result = await createPerformer({
variables: { input }, variables: { input },
@ -168,7 +191,18 @@ export function useCreateScrapedTag(
const { scrapeResult, setScrapeResult, newObjects, setNewObjects } = props; const { scrapeResult, setScrapeResult, newObjects, setNewObjects } = props;
async function createNewTag(toCreate: GQL.ScrapedTag) { 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({ const result = await createTag({
variables: { input }, variables: { input },

View file

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

View file

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