import {IndexedMembersByProject} from 'sentry/actionCreators/members';
import LoadingError from 'sentry/components/loadingError';
import LoadingIndicator from 'sentry/components/loadingIndicator';
import {PanelBody} from 'sentry/components/panels';
import IssuesReplayCountProvider from 'sentry/components/replays/issuesReplayCountProvider';
import StreamGroup from 'sentry/components/stream/group';
import GroupStore from 'sentry/stores/groupStore';
import {Group} from 'sentry/types';
import theme from 'sentry/utils/theme';
import useApi from 'sentry/utils/useApi';
import useMedia from 'sentry/utils/useMedia';
import useOrganization from 'sentry/utils/useOrganization';
import {useSyncedLocalStorageState} from 'sentry/utils/useSyncedLocalStorageState';
import NoGroupsHandler from './noGroupsHandler';
import {IssueSortOptions, SAVED_SEARCHES_SIDEBAR_OPEN_LOCALSTORAGE_KEY} from './utils';
type GroupListBodyProps = {
displayReprocessingLayout: boolean;
error: string | null;
groupIds: string[];
groupStatsPeriod: string;
loading: boolean;
memberList: IndexedMembersByProject;
query: string;
refetchGroups: () => void;
selectedProjectIds: number[];
sort: string;
};
type GroupListProps = {
displayReprocessingLayout: boolean;
groupIds: string[];
groupStatsPeriod: string;
memberList: IndexedMembersByProject;
query: string;
sort: string;
};
function GroupListBody({
groupIds,
memberList,
query,
sort,
displayReprocessingLayout,
groupStatsPeriod,
loading,
error,
refetchGroups,
selectedProjectIds,
}: GroupListBodyProps) {
const api = useApi();
const organization = useOrganization();
if (loading) {
return ;
}
if (error) {
return ;
}
if (!groupIds.length) {
return (
);
}
return (
);
}
function GroupList({
groupIds,
memberList,
query,
sort,
displayReprocessingLayout,
groupStatsPeriod,
}: GroupListProps) {
const [isSavedSearchesOpen] = useSyncedLocalStorageState(
SAVED_SEARCHES_SIDEBAR_OPEN_LOCALSTORAGE_KEY,
false
);
const topIssue = groupIds[0];
const showInboxTime = sort === IssueSortOptions.INBOX;
const canSelect = !useMedia(
`(max-width: ${
isSavedSearchesOpen ? theme.breakpoints.large : theme.breakpoints.small
})`
);
return (
{groupIds.map((id, index) => {
const hasGuideAnchor = id === topIssue;
const group = GroupStore.get(id) as Group | undefined;
return (
);
})}
);
}
export default GroupListBody;