overleaf/services/web/frontend/js/features/pdf-preview/components/pdf-logs-button-content.js

68 lines
1.5 KiB
JavaScript
Raw Normal View History

import { useTranslation } from 'react-i18next'
import Icon from '../../../shared/components/icon'
import PropTypes from 'prop-types'
import { memo } from 'react'
export function PdfLogsButtonContent({
showLogs,
logEntries,
codeCheckFailed,
}) {
const { t } = useTranslation()
if (showLogs) {
return (
<>
<Icon type="file-pdf-o" />
<span className="toolbar-text toolbar-hide-small">{t('view_pdf')}</span>
</>
)
}
if (codeCheckFailed) {
return (
<>
<Icon type="exclamation-triangle" />
<span className="toolbar-text toolbar-hide-small">
{t('code_check_failed')}
</span>
</>
)
}
const count = logEntries?.errors?.length || logEntries?.warnings?.length
if (!count) {
return (
<>
<Icon type="file-text-o" />
<span className="toolbar-text toolbar-hide-small">
{t('view_logs')}
</span>
</>
)
}
return (
<>
<Icon type="file-text-o" />
<span className="btn-toggle-logs-label toolbar-text toolbar-hide-small">
{logEntries.errors?.length
? t('your_project_has_an_error', { count })
: t('view_warning', { count })}
<span className="sr-hidden">
{count > 1 && ` (${count > 99 ? '99+' : count})`}
</span>
</span>
</>
)
}
PdfLogsButtonContent.propTypes = {
codeCheckFailed: PropTypes.bool,
showLogs: PropTypes.bool,
logEntries: PropTypes.object,
}
export default memo(PdfLogsButtonContent)