diff --git a/ui/v2.5/src/components/Tagger/context.tsx b/ui/v2.5/src/components/Tagger/context.tsx index cdbb5902f42..f6404a333fa 100644 --- a/ui/v2.5/src/components/Tagger/context.tsx +++ b/ui/v2.5/src/components/Tagger/context.tsx @@ -25,6 +25,7 @@ import { useToast } from "src/hooks/Toast"; import { ConfigurationContext } from "src/hooks/Config"; import { ITaggerSource, SCRAPER_PREFIX, STASH_BOX_PREFIX } from "./constants"; import { errorToString } from "src/utils"; +import { mergeStudioStashIDs } from "./utils"; export interface ITaggerContextState { config: ITaggerConfig; @@ -708,6 +709,11 @@ export const TaggerContext: React.FC = ({ children }) => { async function updateExistingStudio(input: GQL.StudioUpdateInput) { try { + const inputCopy = { ...input }; + inputCopy.stash_ids = await mergeStudioStashIDs( + input.id, + input.stash_ids ?? [] + ); const result = await updateStudio({ variables: { input: input, diff --git a/ui/v2.5/src/components/Tagger/studios/StashSearchResult.tsx b/ui/v2.5/src/components/Tagger/studios/StashSearchResult.tsx index 9a78588c76e..deb04153f58 100644 --- a/ui/v2.5/src/components/Tagger/studios/StashSearchResult.tsx +++ b/ui/v2.5/src/components/Tagger/studios/StashSearchResult.tsx @@ -8,6 +8,7 @@ import { faTags } from "@fortawesome/free-solid-svg-icons"; import { useStudioCreate } from "src/core/StashService"; import { useIntl } from "react-intl"; import { apolloError } from "src/utils"; +import { mergeStudioStashIDs } from "../utils"; interface IStashSearchResultProps { studio: GQL.SlimStudioDataFragment; @@ -69,6 +70,12 @@ const StashSearchResult: React.FC = ({ ...parentInput, id: input.parent_id, }; + + parentUpdateData.stash_ids = await mergeStudioStashIDs( + input.parent_id, + parentInput.stash_ids ?? [] + ); + await updateStudio(parentUpdateData); } else { const parentRes = await createStudio({ @@ -87,6 +94,11 @@ const StashSearchResult: React.FC = ({ id: studio.id, }; + updateData.stash_ids = await mergeStudioStashIDs( + studio.id, + input.stash_ids ?? [] + ); + const res = await updateStudio(updateData); if (!res?.data?.studioUpdate) diff --git a/ui/v2.5/src/components/Tagger/studios/StudioTagger.tsx b/ui/v2.5/src/components/Tagger/studios/StudioTagger.tsx index f4b08cb1ad0..853a88d3437 100644 --- a/ui/v2.5/src/components/Tagger/studios/StudioTagger.tsx +++ b/ui/v2.5/src/components/Tagger/studios/StudioTagger.tsx @@ -28,6 +28,7 @@ import { useUpdateStudio } from "../queries"; import { apolloError } from "src/utils"; import { faStar, faTags } from "@fortawesome/free-solid-svg-icons"; import { ExternalLink } from "src/components/Shared/ExternalLink"; +import { mergeStudioStashIDs } from "../utils"; type JobFragment = Pick< GQL.Job, @@ -426,6 +427,10 @@ const StudioTaggerList: React.FC = ({ ...parentInput, id: input.parent_id, }; + parentUpdateData.stash_ids = await mergeStudioStashIDs( + input.parent_id, + parentInput.stash_ids ?? [] + ); await updateStudio(parentUpdateData); } else { const parentRes = await createStudio({ @@ -442,6 +447,10 @@ const StudioTaggerList: React.FC = ({ ...input, id: studioID, }; + updateData.stash_ids = await mergeStudioStashIDs( + studioID, + input.stash_ids ?? [] + ); const res = await updateStudio(updateData); if (!res.data?.studioUpdate) diff --git a/ui/v2.5/src/components/Tagger/utils.ts b/ui/v2.5/src/components/Tagger/utils.ts index 2c4a067fb28..6bac6cb0428 100644 --- a/ui/v2.5/src/components/Tagger/utils.ts +++ b/ui/v2.5/src/components/Tagger/utils.ts @@ -1,5 +1,7 @@ import * as GQL from "src/core/generated-graphql"; import { ParseMode } from "./constants"; +import { queryFindStudio } from "src/core/StashService"; +import { mergeStashIDs } from "src/utils/stashbox"; const months = [ "jan", @@ -142,3 +144,15 @@ export const parsePath = (filePath: string) => { return { paths, file, ext }; }; + +export async function mergeStudioStashIDs( + id: string, + newStashIDs: GQL.StashIdInput[] +) { + const existing = await queryFindStudio(id); + if (existing?.data?.findStudio?.stash_ids) { + return mergeStashIDs(existing.data.findStudio.stash_ids, newStashIDs); + } + + return newStashIDs; +}