add-affiliation.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { useTranslation } from 'react-i18next'
  2. import { useProjectListContext } from '../context/project-list-context'
  3. import getMeta from '../../../utils/meta'
  4. import classNames from 'classnames'
  5. import OLButton from '@/features/ui/components/ol/ol-button'
  6. import { useDsNavStyle } from '@/features/project-list/components/use-is-ds-nav'
  7. export function useAddAffiliation() {
  8. const { totalProjectsCount } = useProjectListContext()
  9. const { isOverleaf } = getMeta('ol-ExposedSettings')
  10. const userAffiliations = getMeta('ol-userAffiliations') || []
  11. return {
  12. show: isOverleaf && totalProjectsCount > 0 && !userAffiliations.length,
  13. }
  14. }
  15. type AddAffiliationProps = {
  16. className?: string
  17. }
  18. function AddAffiliation({ className }: AddAffiliationProps) {
  19. const { t } = useTranslation()
  20. const { show } = useAddAffiliation()
  21. const dsNavStyle = useDsNavStyle()
  22. if (!show) {
  23. return null
  24. }
  25. const classes = classNames('text-center', 'add-affiliation', className)
  26. return (
  27. <div className={classes}>
  28. <p className={dsNavStyle ? 'text-muted' : undefined}>
  29. {t('are_you_affiliated_with_an_institution')}
  30. </p>
  31. <OLButton variant="secondary" href="/user/settings">
  32. {t('add_affiliation')}
  33. </OLButton>
  34. </div>
  35. )
  36. }
  37. export default AddAffiliation