survey-widget.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import usePersistedState from '../../../shared/hooks/use-persisted-state'
  2. import getMeta from '../../../utils/meta'
  3. import { Survey } from '../../../../../types/project/dashboard/survey'
  4. import { useCallback } from 'react'
  5. import Close from '@/shared/components/close'
  6. export default function SurveyWidget() {
  7. const survey: Survey = getMeta('ol-survey')
  8. const [dismissedSurvey, setDismissedSurvey] = usePersistedState(
  9. `dismissed-${survey?.name}`,
  10. false
  11. )
  12. const dismissSurvey = useCallback(() => {
  13. setDismissedSurvey(true)
  14. }, [setDismissedSurvey])
  15. if (!survey?.name || dismissedSurvey) {
  16. return null
  17. }
  18. return (
  19. <div className="user-notifications">
  20. <div className="notification-entry">
  21. <div role="alert" className="alert alert-info-alt">
  22. <div className="notification-body">
  23. {survey.preText}&nbsp;
  24. <a
  25. className="project-list-sidebar-survey-link"
  26. href={survey.url}
  27. target="_blank"
  28. rel="noreferrer noopener"
  29. >
  30. {survey.linkText}
  31. </a>
  32. </div>
  33. <div className="notification-close notification-close-button-style">
  34. <Close variant="dark" onDismiss={() => dismissSurvey()} />
  35. </div>
  36. </div>
  37. </div>
  38. </div>
  39. )
  40. }