fc-3g-ext: IR Post/Provenance restore (tag_apply phase 4) + modal artist fallback
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,21 @@
|
||||
class="fc-prov__desc" v-html="e.post.description_html"
|
||||
/>
|
||||
</article>
|
||||
|
||||
<!-- Fallback: image has artist_id set (folder-derived from
|
||||
filesystem import or set by tag_apply) but no ImageProvenance
|
||||
row exists. Show a minimal "by <artist>" line so the modal
|
||||
isn't blank for IR-imported images that aren't in any post. -->
|
||||
<article
|
||||
v-if="showArtistFallback"
|
||||
class="fc-prov__card"
|
||||
>
|
||||
<div class="fc-prov__meta">
|
||||
<RouterLink :to="`/artist/${fallbackArtist.slug}`">
|
||||
by {{ fallbackArtist.name }}
|
||||
</RouterLink>
|
||||
</div>
|
||||
</article>
|
||||
</template>
|
||||
|
||||
<div v-if="attachments.length" class="fc-prov__attach">
|
||||
@@ -79,13 +94,27 @@ const state = computed(() =>
|
||||
modal.currentImageId == null ? null : prov.imageProv(modal.currentImageId)
|
||||
)
|
||||
|
||||
// Show the panel while loading or on error, or when there is >=1 entry.
|
||||
// Hide entirely when the image has zero provenance.
|
||||
const fallbackArtist = computed(() => modal.current?.artist || null)
|
||||
|
||||
const showArtistFallback = computed(() => {
|
||||
const st = state.value
|
||||
// Only show the fallback when provenance is genuinely empty (no
|
||||
// entries, not loading, no error) AND the image has a direct
|
||||
// artist_id we can surface.
|
||||
if (!st || st.loading || st.error) return false
|
||||
if (Array.isArray(st.entries) && st.entries.length > 0) return false
|
||||
return fallbackArtist.value != null
|
||||
})
|
||||
|
||||
// Show the panel while loading or on error, when there is >=1 entry,
|
||||
// or when the artist fallback applies (image_record.artist_id set but
|
||||
// no ImageProvenance row, e.g. filesystem-imported IR images).
|
||||
const show = computed(() => {
|
||||
const st = state.value
|
||||
if (!st) return false
|
||||
if (st.loading || st.error) return true
|
||||
return Array.isArray(st.entries) && st.entries.length > 0
|
||||
if (Array.isArray(st.entries) && st.entries.length > 0) return true
|
||||
return showArtistFallback.value
|
||||
})
|
||||
|
||||
const attachments = computed(() => state.value?.attachments || [])
|
||||
|
||||
Reference in New Issue
Block a user