add-affiliation.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { useTranslation } from 'react-i18next'
  2. import { Button } from 'react-bootstrap'
  3. import { useProjectListContext } from '../context/project-list-context'
  4. import getMeta from '../../../utils/meta'
  5. import { Affiliation } from '../../../../../types/affiliation'
  6. import { ExposedSettings } from '../../../../../types/exposed-settings'
  7. import classNames from 'classnames'
  8. export function useAddAffiliation() {
  9. const { totalProjectsCount } = useProjectListContext()
  10. const { isOverleaf } = getMeta('ol-ExposedSettings') as ExposedSettings
  11. const userAffiliations = getMeta('ol-userAffiliations', []) as Affiliation[]
  12. return {
  13. show: isOverleaf && totalProjectsCount > 0 && !userAffiliations.length,
  14. }
  15. }
  16. type AddAffiliationProps = {
  17. className?: string
  18. }
  19. function AddAffiliation({ className }: AddAffiliationProps) {
  20. const { t } = useTranslation()
  21. const { show } = useAddAffiliation()
  22. if (!show) {
  23. return null
  24. }
  25. const classes = classNames('text-centered', 'add-affiliation', className)
  26. return (
  27. <div className={classes}>
  28. <p>{t('are_you_affiliated_with_an_institution')}</p>
  29. <Button
  30. bsStyle={null}
  31. className="btn-secondary-info btn-secondary"
  32. href="/user/settings"
  33. >
  34. {t('add_affiliation')}
  35. </Button>
  36. </div>
  37. )
  38. }
  39. export default AddAffiliation