Files
overleaf-cep/services/web/modules/zotero/frontend/js/components/tpr-file-view-info.tsx
T
2026-09-27 18:11:27 +02:00

50 lines
1.6 KiB
TypeScript

import { useTranslation } from 'react-i18next'
import getMeta from '@/utils/meta'
import { formatTime, relativeDate } from '@/features/utils/format-date'
import { LinkedFileIcon } from '@/features/file-view/components/file-view-icons'
import { hasProvider } from '@/features/file-view/types/binary-file'
import type { LinkedFile, LinkedFileData } from '@/features/file-view/types/binary-file'
/**
* Shows "Imported from Zotero at <date>" in the owner's file view header or
* "Imported from Zotero at <date> by <owner>" in the collaborator's file view header
* when viewing a Zotero-linked .bib file.
* Registered via overleafModuleImports.tprFileViewInfo.
*/
type TPRFileViewInfoProps = {
file: LinkedFile<keyof LinkedFileData>
}
export function TPRFileViewInfo({ file }: TPRFileViewInfoProps) {
const { t } = useTranslation()
if (!hasProvider(file, 'zotero')) return null
const importedAt = (file.linkedFileData as any)?.importedAt || file.created
const formattedDate = formatTime(importedAt)
const relative = relativeDate(importedAt)
const importer_id = (file.linkedFileData as any)?.importer_id
const importer_name = (file.linkedFileData as any)?.importer_name || 'Unknown'
return (
<p>
<LinkedFileIcon />
&nbsp;
{(importer_id === getMeta('ol-user_id')) ? (
t('imported_from_zotero_at_date', {
formattedDate,
relativeDate: relative,
})
) : (
t('imported_from_zotero_at_date_by', {
formattedDate,
relativeDate: relative,
importer_name,
})
)}
</p>
)
}