|
@@ -5,6 +5,7 @@ import styled from '@emotion/styled';
|
|
|
import ErrorBoundary from 'sentry/components/errorBoundary';
|
|
|
import FeedbackFilters from 'sentry/components/feedback/feedbackFilters';
|
|
|
import FeedbackItemLoader from 'sentry/components/feedback/feedbackItem/feedbackItemLoader';
|
|
|
+import FeedbackWidgetBanner from 'sentry/components/feedback/feedbackOnboarding/feedbackWidgetBanner';
|
|
|
import FeedbackSearch from 'sentry/components/feedback/feedbackSearch';
|
|
|
import FeedbackSetupPanel from 'sentry/components/feedback/feedbackSetupPanel';
|
|
|
import FeedbackWhatsNewBanner from 'sentry/components/feedback/feedbackWhatsNewBanner';
|
|
@@ -20,9 +21,12 @@ import * as Layout from 'sentry/components/layouts/thirds';
|
|
|
import PageFiltersContainer from 'sentry/components/organizations/pageFilters/container';
|
|
|
import {PageHeadingQuestionTooltip} from 'sentry/components/pageHeadingQuestionTooltip';
|
|
|
import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
|
|
|
+import {feedbackWidgetPlatforms} from 'sentry/data/platformCategories';
|
|
|
import {t} from 'sentry/locale';
|
|
|
import {space} from 'sentry/styles/space';
|
|
|
import useOrganization from 'sentry/utils/useOrganization';
|
|
|
+import usePageFilters from 'sentry/utils/usePageFilters';
|
|
|
+import useProjects from 'sentry/utils/useProjects';
|
|
|
import FluidHeight from 'sentry/views/replays/detail/layout/fluidHeight';
|
|
|
|
|
|
interface Props extends RouteComponentProps<{}, {}, {}> {}
|
|
@@ -33,10 +37,25 @@ export default function FeedbackListPage({}: Props) {
|
|
|
const {hasSetupNewFeedback} = useHaveSelectedProjectsSetupNewFeedback();
|
|
|
|
|
|
const showWhatsNewBanner = hasSetupOneFeedback && !hasSetupNewFeedback;
|
|
|
+ const hasNewOnboarding = organization.features.includes('user-feedback-onboarding');
|
|
|
|
|
|
const feedbackSlug = useCurrentFeedbackId();
|
|
|
const hasSlug = Boolean(feedbackSlug);
|
|
|
|
|
|
+ const pageFilters = usePageFilters();
|
|
|
+ const projects = useProjects();
|
|
|
+
|
|
|
+ const selectedProjects = projects.projects.filter(p =>
|
|
|
+ pageFilters.selection.projects.includes(Number(p.id))
|
|
|
+ );
|
|
|
+
|
|
|
+ // one selected project is widget eligible
|
|
|
+ const oneIsWidgetEligible = selectedProjects.some(p =>
|
|
|
+ feedbackWidgetPlatforms.includes(p.platform!)
|
|
|
+ );
|
|
|
+
|
|
|
+ const showWidgetBanner = showWhatsNewBanner && oneIsWidgetEligible && hasNewOnboarding;
|
|
|
+
|
|
|
return (
|
|
|
<SentryDocumentTitle title={t('User Feedback')} orgSlug={organization.slug}>
|
|
|
<FullViewport>
|
|
@@ -60,7 +79,9 @@ export default function FeedbackListPage({}: Props) {
|
|
|
<PageFiltersContainer>
|
|
|
<ErrorBoundary>
|
|
|
<LayoutGrid data-banner={showWhatsNewBanner}>
|
|
|
- {showWhatsNewBanner ? (
|
|
|
+ {showWidgetBanner ? (
|
|
|
+ <FeedbackWidgetBanner style={{gridArea: 'banner'}} />
|
|
|
+ ) : showWhatsNewBanner ? (
|
|
|
<FeedbackWhatsNewBanner style={{gridArea: 'banner'}} />
|
|
|
) : null}
|
|
|
<FeedbackFilters style={{gridArea: 'filters'}} />
|