import { ref, watch } from 'vue' import { useUserLookup } from '@/composables/useUserLookup' import { namesWithDeletedFallback } from '@/lib/deletedUser' import type { ContentEntry } from '@/lib/contentTypes' function authorIds(entry: ContentEntry | null) { return entry ? [entry.created_by, entry.updated_by].filter((id) => id > 0) : [] } export function useEntryNames(entry: () => ContentEntry | null) { const { lookupUsers } = useUserLookup() const names = ref>({}) const requested = new Set() async function resolve() { const wanted = [...new Set(authorIds(entry()))].filter((id) => !requested.has(id)) if (wanted.length === 0) { return } wanted.forEach((id) => requested.add(id)) try { const users = await lookupUsers(wanted) names.value = { ...names.value, ...namesWithDeletedFallback(wanted, users) } } catch { wanted.forEach((id) => requested.delete(id)) } } watch(() => authorIds(entry()).join(','), resolve, { immediate: true }) return names }