Files
overleaf-cep/services/web/modules/zotero/frontend/js/components/tpr-file-view-info.tsx
T
yu-i-i 9afab5ade1 Zotero: improve integration and reference import
- use OAuth instead of tokens
  - add an integration card
  - improve error handling
  - add BibLaTeX format support
  - fix indexing of linked .bib files on creation
2026-09-22 02:41:43 +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 importedByUserId = (file.linkedFileData as any)?.importedByUserId
const importedByName = (file.linkedFileData as any)?.importedByName || 'Unknown'
return (
<p>
<LinkedFileIcon />
&nbsp;
{(importedByUserId === getMeta('ol-user_id')) ? (
t('imported_from_zotero_at_date', {
formattedDate,
relativeDate: relative,
})
) : (
t('imported_from_zotero_at_date_by', {
formattedDate,
relativeDate: relative,
importedByName,
})
)}
</p>
)
}