feedbackWhatsNewBanner.tsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import {CSSProperties, useEffect} from 'react';
  2. import replaysDeadRageBackground from 'sentry-images/spot/replay-dead-rage-changelog.svg';
  3. import PageBanner from 'sentry/components/alerts/pageBanner';
  4. import {LinkButton} from 'sentry/components/button';
  5. import {IconBroadcast} from 'sentry/icons';
  6. import {t} from 'sentry/locale';
  7. import {trackAnalytics} from 'sentry/utils/analytics';
  8. import useDismissAlert from 'sentry/utils/useDismissAlert';
  9. import useOrganization from 'sentry/utils/useOrganization';
  10. interface Props {
  11. className?: string;
  12. style?: CSSProperties;
  13. }
  14. export default function FeedbackWhatsNewBanner({className, style}: Props) {
  15. const organization = useOrganization();
  16. const {dismiss, isDismissed} = useDismissAlert({
  17. key: `${organization.id}:feedback-whats-new-banner`,
  18. });
  19. useEffect(() => {
  20. if (!isDismissed) {
  21. trackAnalytics('feedback.whats-new-banner-viewed', {
  22. organization,
  23. });
  24. }
  25. }, [organization, isDismissed]);
  26. if (isDismissed) {
  27. return null;
  28. }
  29. return (
  30. <PageBanner
  31. className={className}
  32. style={style}
  33. button={
  34. <LinkButton
  35. external
  36. href="https://docs.sentry.io/product/user-feedback/setup/"
  37. priority="primary"
  38. analyticsEventName="Clicked Feedback Onboarding Setup Button"
  39. analyticsEventKey="feedback.whats-new-banner-clicked"
  40. analyticsParams={{surface: 'whats-new-banner'}}
  41. >
  42. {t('Set Up Now')}
  43. </LinkButton>
  44. }
  45. description={t(
  46. 'Users can submit feedback anytime they’re having a problem with your app via our feedback widget.'
  47. )}
  48. heading={t('Introducing the New User Feedback')}
  49. icon={<IconBroadcast size="sm" />}
  50. image={replaysDeadRageBackground}
  51. title={t('What’s new')}
  52. onDismiss={() => {
  53. trackAnalytics('feedback.whats-new-banner-dismissed', {
  54. organization,
  55. });
  56. dismiss();
  57. }}
  58. />
  59. );
  60. }