From b61631c33ce37d2629dcd4739c7263302a498148 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sun, 22 Mar 2026 05:53:13 +0100 Subject: [PATCH] Fixed scene actor tag revision display. --- components/edit/revisions.vue | 25 ++++++++++++++++++++++++- src/scenes.js | 10 ++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/components/edit/revisions.vue b/components/edit/revisions.vue index 44b3e1e..c1aaf81 100644 --- a/components/edit/revisions.vue +++ b/components/edit/revisions.vue @@ -266,7 +266,7 @@ const expanded = ref(new Set()); const mappedKeys = { actors: actorsById, - tags: tagsById, + // tags: tagsById, movies: moviesById, }; @@ -292,6 +292,16 @@ const curatedRevisions = computed(() => revisions.value.map((revision) => { }))]; } + if (key === 'tags') { + return [key, value.map((tag) => ({ + id: tag.id, + name: tag.actorId + ? `${actorsById.value[tag.actorId]?.name}: ${tagsById.value[tag.id]?.name}` + : tagsById.value[tag.id]?.name, + modified: revision.deltas.some((delta) => delta.key === key && !delta.value.some((deltaTag) => deltaTag.id === tag.id)), + }))]; + } + if (key === 'socials') { // new socials don't have IDs yet, so we need to compare the values return [key, value.map((item) => ({ @@ -323,6 +333,19 @@ const curatedRevisions = computed(() => revisions.value.map((revision) => { }; } + if (delta.key === 'tags') { + return { + ...delta, + value: delta.value.map((tag) => ({ + id: tag.id, + name: tag.actorId + ? `${actorsById.value[tag.actorId]?.name}: ${tagsById.value[tag.id]?.name}` + : tagsById.value[tag.id]?.name, + modified: !revision.base[delta.key].some((deltaTag) => deltaTag.id === tag.id), + })), + }; + } + if (delta.key === 'socials') { // new socials don't have IDs yet, so we need to compare the values return { diff --git a/src/scenes.js b/src/scenes.js index 2fa3a6c..b63cf88 100644 --- a/src/scenes.js +++ b/src/scenes.js @@ -729,8 +729,14 @@ export async function fetchSceneRevisions(revisionId, filters = {}, reqUser) { .limit(limit) .offset((page - 1) * limit); - const actorIds = Array.from(new Set(revisions.flatMap((revision) => [...revision.base.actors, ...(revision.deltas.find((delta) => delta.key === 'actors')?.value || [])]))); - const tagIds = Array.from(new Set(revisions.flatMap((revision) => [...revision.base.tags, ...(revision.deltas.find((delta) => delta.key === 'tags')?.value || [])]))); + const actorIds = Array.from(new Set(revisions.flatMap((revision) => [ + ...revision.base.actors, + ...(revision.deltas.find((delta) => delta.key === 'actors')?.value || []), + ...revision.base.tags.map((tag) => tag.actorId), + ...revision.deltas.find((delta) => delta.key === 'tags')?.value.map((tag) => tag.actorId) || [], + ].filter(Boolean)))); + + const tagIds = Array.from(new Set(revisions.flatMap((revision) => [...revision.base.tags, ...(revision.deltas.find((delta) => delta.key === 'tags')?.value || [])].map((tag) => tag.id)))); const movieIds = Array.from(new Set(revisions.flatMap((revision) => [...revision.base.movies, ...(revision.deltas.find((delta) => delta.key === 'movies')?.value || [])]))); const [actors, tags, movies] = await Promise.all([