import {Fragment, useState} from 'react';
import styled from '@emotion/styled';
import {Button} from 'sentry/components/button';
import LoadingIndicator from 'sentry/components/loadingIndicator';
import ReplayRageClickSdkVersionBanner from 'sentry/components/replays/replayRageClickSdkVersionBanner';
import {t} from 'sentry/locale';
import {space} from 'sentry/styles/space';
import {useHaveSelectedProjectsSentAnyReplayEvents} from 'sentry/utils/replays/hooks/useReplayOnboarding';
import {MIN_DEAD_RAGE_CLICK_SDK} from 'sentry/utils/replays/sdkVersions';
import useRouteAnalyticsParams from 'sentry/utils/routeAnalytics/useRouteAnalyticsParams';
import useOrganization from 'sentry/utils/useOrganization';
import usePageFilters from 'sentry/utils/usePageFilters';
import useProjectSdkNeedsUpdate from 'sentry/utils/useProjectSdkNeedsUpdate';
import DeadRageSelectorCards from 'sentry/views/replays/deadRageClick/deadRageSelectorCards';
import useAllMobileProj from 'sentry/views/replays/detail/useAllMobileProj';
import ReplaysFilters from 'sentry/views/replays/list/filters';
import ReplayOnboardingPanel from 'sentry/views/replays/list/replayOnboardingPanel';
import ReplaysList from 'sentry/views/replays/list/replaysList';
import ReplaysSearch from 'sentry/views/replays/list/search';
export default function ListContent() {
const organization = useOrganization();
const hasSessionReplay = organization.features.includes('session-replay');
const hasSentReplays = useHaveSelectedProjectsSentAnyReplayEvents();
const {
selection: {projects},
} = usePageFilters();
const rageClicksSdkVersion = useProjectSdkNeedsUpdate({
minVersion: MIN_DEAD_RAGE_CLICK_SDK.minVersion,
organization,
projectId: projects.map(String),
});
const {allMobileProj} = useAllMobileProj();
const [widgetIsOpen, setWidgetIsOpen] = useState(true);
useRouteAnalyticsParams({
hasSessionReplay,
hasSentReplays: hasSentReplays.hasSentOneReplay,
hasRageClickMinSDK: !rageClicksSdkVersion.needsUpdate,
});
if (hasSentReplays.fetching || rageClicksSdkVersion.isFetching) {
return (
);
}
if (!hasSessionReplay || !hasSentReplays.hasSentOneReplay) {
return (
);
}
if (rageClicksSdkVersion.needsUpdate && !allMobileProj) {
return (
);
}
return (
{!allMobileProj && (
)}
{widgetIsOpen && !allMobileProj ? : null}
);
}
const FiltersContainer = styled('div')`
display: flex;
flex-direction: row;
gap: ${space(2)};
flex-wrap: wrap;
`;
const SearchWrapper = styled(FiltersContainer)`
flex-grow: 1;
flex-wrap: nowrap;
`;