diff --git a/ui/v2.5/src/components/Tagger/StashSearchResult.tsx b/ui/v2.5/src/components/Tagger/StashSearchResult.tsx index b830fdde9..63bf6940b 100755 --- a/ui/v2.5/src/components/Tagger/StashSearchResult.tsx +++ b/ui/v2.5/src/components/Tagger/StashSearchResult.tsx @@ -59,6 +59,7 @@ interface IStashSearchResultProps { setScene: (scene: GQL.SlimSceneDataFragment) => void; setCoverImage: boolean; tagOperation: string; + setTags: boolean; endpoint: string; queueFingerprintSubmission: (sceneId: string, endpoint: string) => void; } @@ -72,6 +73,7 @@ const StashSearchResult: React.FC = ({ setScene, setCoverImage, tagOperation, + setTags, endpoint, queueFingerprintSubmission, }) => { @@ -234,29 +236,33 @@ const StashSearchResult: React.FC = ({ } } - const tagIDs: string[] = - tagOperation === "merge" - ? stashScene?.tags?.map((t) => t.id) ?? [] - : []; - const tags = scene.tags ?? []; - if (tags.length > 0) { - const tagDict: Record = (allTags?.allTagsSlim ?? []) - .filter((t) => t.name) - .reduce((dict, t) => ({ ...dict, [t.name.toLowerCase()]: t.id }), {}); - const newTags: string[] = []; - tags.forEach((tag) => { - if (tagDict[tag.name.toLowerCase()]) - tagIDs.push(tagDict[tag.name.toLowerCase()]); - else newTags.push(tag.name); - }); + let updatedTags = stashScene?.tags?.map((t) => t.id) ?? []; + if (setTags) { + const newTagIDs = tagOperation === "merge" ? updatedTags : []; + const tags = scene.tags ?? []; + if (tags.length > 0) { + const tagDict: Record = (allTags?.allTagsSlim ?? []) + .filter((t) => t.name) + .reduce( + (dict, t) => ({ ...dict, [t.name.toLowerCase()]: t.id }), + {} + ); + const newTags: string[] = []; + tags.forEach((tag) => { + if (tagDict[tag.name.toLowerCase()]) + newTagIDs.push(tagDict[tag.name.toLowerCase()]); + else newTags.push(tag.name); + }); - const createdTags = await Promise.all( - newTags.map((tag) => createTag(tag)) - ); - createdTags.forEach((createdTag) => { - if (createdTag?.data?.tagCreate?.id) - tagIDs.push(createdTag.data.tagCreate.id); - }); + const createdTags = await Promise.all( + newTags.map((tag) => createTag(tag)) + ); + createdTags.forEach((createdTag) => { + if (createdTag?.data?.tagCreate?.id) + newTagIDs.push(createdTag.data.tagCreate.id); + }); + } + updatedTags = uniq(newTagIDs); } const sceneUpdateResult = await updateScene({ @@ -269,7 +275,7 @@ const StashSearchResult: React.FC = ({ studio_id: studioID, cover_image: imgData, url: scene.url, - ...(tagIDs ? { tag_ids: uniq(tagIDs) } : {}), + tag_ids: updatedTags, stash_ids: [ ...(stashScene?.stash_ids ?? []), { diff --git a/ui/v2.5/src/components/Tagger/Tagger.tsx b/ui/v2.5/src/components/Tagger/Tagger.tsx index 3acb9ac4a..056bff475 100755 --- a/ui/v2.5/src/components/Tagger/Tagger.tsx +++ b/ui/v2.5/src/components/Tagger/Tagger.tsx @@ -260,6 +260,7 @@ const TaggerList: React.FC = ({ setScene={handleTaggedScene} scene={fingerprintMatch} setCoverImage={config.setCoverImage} + setTags={config.setTags} tagOperation={config.tagOperation} endpoint={selectedEndpoint.endpoint} queueFingerprintSubmission={queueFingerprintSubmission} @@ -285,6 +286,7 @@ const TaggerList: React.FC = ({ } setCoverImage={config.setCoverImage} tagOperation={config.tagOperation} + setTags={config.setTags} setScene={handleTaggedScene} endpoint={selectedEndpoint.endpoint} queueFingerprintSubmission={queueFingerprintSubmission}