Skip to content

Commit d743787

Browse files
authored
Include stash-ids when creating objects from scrape dialog (#6269)
* Filter out empty aliases
1 parent 957c4fe commit d743787

File tree

4 files changed

+65
-10
lines changed

4 files changed

+65
-10
lines changed

ui/v2.5/src/components/Scenes/SceneDetails/SceneScrapeDialog.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = ({
133133

134134
const { tags, newTags, scrapedTagsRow } = useScrapedTags(
135135
sceneTags,
136-
scraped.tags
136+
scraped.tags,
137+
endpoint
137138
);
138139

139140
const [details, setDetails] = useState<ScrapeResult<string>>(
@@ -148,20 +149,23 @@ export const SceneScrapeDialog: React.FC<ISceneScrapeDialogProps> = ({
148149
scrapeResult: studio,
149150
setScrapeResult: setStudio,
150151
setNewObject: setNewStudio,
152+
endpoint,
151153
});
152154

153155
const createNewPerformer = useCreateScrapedPerformer({
154156
scrapeResult: performers,
155157
setScrapeResult: setPerformers,
156158
newObjects: newPerformers,
157159
setNewObjects: setNewPerformers,
160+
endpoint,
158161
});
159162

160163
const createNewGroup = useCreateScrapedGroup({
161164
scrapeResult: groups,
162165
setScrapeResult: setGroups,
163166
newObjects: newGroups,
164167
setNewObjects: setNewGroups,
168+
endpoint,
165169
});
166170

167171
const intl = useIntl();

ui/v2.5/src/components/Shared/ScrapeDialog/createObjects.ts

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ interface IUseCreateNewStudioProps {
4646
scrapeResult: ObjectScrapeResult<GQL.ScrapedStudio>
4747
) => void;
4848
setNewObject: (newObject: GQL.ScrapedStudio | undefined) => void;
49+
endpoint?: string;
4950
}
5051

5152
export function useCreateScrapedStudio(props: IUseCreateNewStudioProps) {
@@ -54,12 +55,33 @@ export function useCreateScrapedStudio(props: IUseCreateNewStudioProps) {
5455
const { scrapeResult, setScrapeResult, setNewObject } = props;
5556

5657
async function createNewStudio(toCreate: GQL.ScrapedStudio) {
58+
const input: GQL.StudioCreateInput = {
59+
name: toCreate.name,
60+
urls: toCreate.urls,
61+
aliases:
62+
toCreate.aliases
63+
?.split(",")
64+
.map((a) => a.trim())
65+
.filter((a) => a) || [],
66+
details: toCreate.details,
67+
image: toCreate.image,
68+
tag_ids: (toCreate.tags ?? [])
69+
.filter((t) => t.stored_id)
70+
.map((t) => t.stored_id!),
71+
};
72+
73+
if (props.endpoint && toCreate.remote_site_id) {
74+
input.stash_ids = [
75+
{
76+
endpoint: props.endpoint,
77+
stash_id: toCreate.remote_site_id,
78+
},
79+
];
80+
}
81+
5782
const result = await createStudio({
5883
variables: {
59-
input: {
60-
name: toCreate.name,
61-
url: toCreate.url,
62-
},
84+
input,
6385
},
6486
});
6587

@@ -81,6 +103,7 @@ interface IUseCreateNewObjectProps<T> {
81103
setScrapeResult: (scrapeResult: ScrapeResult<T[]>) => void;
82104
newObjects: T[];
83105
setNewObjects: (newObject: T[]) => void;
106+
endpoint?: string;
84107
}
85108

86109
export function useCreateScrapedPerformer(
@@ -91,7 +114,7 @@ export function useCreateScrapedPerformer(
91114
const { scrapeResult, setScrapeResult, newObjects, setNewObjects } = props;
92115

93116
async function createNewPerformer(toCreate: GQL.ScrapedPerformer) {
94-
const input = scrapedPerformerToCreateInput(toCreate);
117+
const input = scrapedPerformerToCreateInput(toCreate, props.endpoint);
95118

96119
const result = await createPerformer({
97120
variables: { input },
@@ -168,7 +191,18 @@ export function useCreateScrapedTag(
168191
const { scrapeResult, setScrapeResult, newObjects, setNewObjects } = props;
169192

170193
async function createNewTag(toCreate: GQL.ScrapedTag) {
171-
const input: GQL.TagCreateInput = { name: toCreate.name ?? "" };
194+
const input: GQL.TagCreateInput = {
195+
name: toCreate.name ?? "",
196+
};
197+
198+
if (props.endpoint && toCreate.remote_site_id) {
199+
input.stash_ids = [
200+
{
201+
endpoint: props.endpoint,
202+
stash_id: toCreate.remote_site_id,
203+
},
204+
];
205+
}
172206

173207
const result = await createTag({
174208
variables: { input },

ui/v2.5/src/components/Shared/ScrapeDialog/scrapedTags.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import { ScrapedTagsRow } from "./ScrapedObjectsRow";
99

1010
export function useScrapedTags(
1111
existingTags: Tag[],
12-
scrapedTags?: GQL.Maybe<GQL.ScrapedTag[]>
12+
scrapedTags?: GQL.Maybe<GQL.ScrapedTag[]>,
13+
endpoint?: string
1314
) {
1415
const intl = useIntl();
1516
const [tags, setTags] = useState<ObjectListScrapeResult<GQL.ScrapedTag>>(
@@ -33,6 +34,7 @@ export function useScrapedTags(
3334
setScrapeResult: setTags,
3435
newObjects: newTags,
3536
setNewObjects: setNewTags,
37+
endpoint,
3638
});
3739

3840
const scrapedTagsRow = (

ui/v2.5/src/core/performers.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,14 @@ export function sortPerformers<T extends IPerformerFragment>(performers: T[]) {
8484
}
8585

8686
export const scrapedPerformerToCreateInput = (
87-
toCreate: GQL.ScrapedPerformer
87+
toCreate: GQL.ScrapedPerformer,
88+
endpoint?: string
8889
) => {
89-
const aliases = toCreate.aliases?.split(",").map((a) => a.trim());
90+
const aliases =
91+
toCreate.aliases
92+
?.split(",")
93+
.map((a) => a.trim())
94+
.filter((a) => a) || [];
9095

9196
const input: GQL.PerformerCreateInput = {
9297
name: toCreate.name ?? "",
@@ -118,5 +123,15 @@ export const scrapedPerformerToCreateInput = (
118123
: undefined,
119124
circumcised: stringToCircumcised(toCreate.circumcised),
120125
};
126+
127+
if (endpoint && toCreate.remote_site_id) {
128+
input.stash_ids = [
129+
{
130+
endpoint,
131+
stash_id: toCreate.remote_site_id,
132+
},
133+
];
134+
}
135+
121136
return input;
122137
};

0 commit comments

Comments
 (0)