index.tsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import {useState} from 'react';
  2. import type {Event} from 'sentry/types/event';
  3. import type {Project} from 'sentry/types/project';
  4. import {trackAnalytics} from 'sentry/utils/analytics';
  5. import {getAnalyticsDataForEvent} from 'sentry/utils/events';
  6. import useOrganization from 'sentry/utils/useOrganization';
  7. import {Banner} from './banner';
  8. import {Suggestion} from './suggestion';
  9. type Props = {
  10. event: Event;
  11. projectSlug: Project['slug'];
  12. };
  13. export function AiSuggestedSolution({projectSlug, event}: Props) {
  14. const organization = useOrganization();
  15. const [openSuggestion, setOpenSuggestion] = useState(false);
  16. return (
  17. <div>
  18. {!openSuggestion ? (
  19. <Banner
  20. onViewSuggestion={() => {
  21. trackAnalytics('ai_suggested_solution.view_suggestion_button_clicked', {
  22. organization,
  23. project_id: event.projectID,
  24. group_id: event.groupID,
  25. ...getAnalyticsDataForEvent(event),
  26. });
  27. setOpenSuggestion(true);
  28. }}
  29. />
  30. ) : (
  31. <Suggestion
  32. projectSlug={projectSlug}
  33. event={event}
  34. onHideSuggestion={() => {
  35. trackAnalytics('ai_suggested_solution.hide_suggestion_button_clicked', {
  36. organization,
  37. project_id: event.projectID,
  38. group_id: event.groupID,
  39. ...getAnalyticsDataForEvent(event),
  40. });
  41. setOpenSuggestion(false);
  42. }}
  43. />
  44. )}
  45. </div>
  46. );
  47. }