import { useState } from 'react'; import { Table, TableBody, TableCell, TableHead, TableRow, Typography, } from '@mui/material'; import usePagination from 'hooks/usePagination'; import { CREATE_SEGMENT } from 'component/providers/AccessProvider/permissions'; import PaginateUI from 'component/common/PaginateUI/PaginateUI'; import { SegmentListItem } from './SegmentListItem/SegmentListItem'; import { ISegment } from 'interfaces/segment'; import { useStyles } from './SegmentList.styles'; import { useSegments } from 'hooks/api/getters/useSegments/useSegments'; import { useSegmentsApi } from 'hooks/api/actions/useSegmentsApi/useSegmentsApi'; import useToast from 'hooks/useToast'; import { formatUnknownError } from 'utils/formatUnknownError'; import { Link, useNavigate } from 'react-router-dom'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { HeaderTitle } from 'component/common/HeaderTitle/HeaderTitle'; import PageContent from 'component/common/PageContent'; import PermissionButton from 'component/common/PermissionButton/PermissionButton'; import { SegmentDelete } from '../SegmentDelete/SegmentDelete'; import { SegmentDocsWarning } from 'component/segments/SegmentDocs/SegmentDocs'; import { NAVIGATE_TO_CREATE_SEGMENT } from 'utils/testIds'; export const SegmentsList = () => { const navigate = useNavigate(); const { segments = [], refetchSegments } = useSegments(); const { deleteSegment } = useSegmentsApi(); const { page, pages, nextPage, prevPage, setPageIndex, pageIndex } = usePagination(segments, 10); const [currentSegment, setCurrentSegment] = useState(); const [delDialog, setDelDialog] = useState(false); const { setToastData, setToastApiError } = useToast(); const { classes: styles } = useStyles(); const onDeleteSegment = async () => { if (!currentSegment?.id) return; try { await deleteSegment(currentSegment?.id); await refetchSegments(); setToastData({ type: 'success', title: 'Successfully deleted segment', }); } catch (error: unknown) { setToastApiError(formatUnknownError(error)); } setDelDialog(false); }; const renderSegments = () => { return page.map((segment: ISegment) => { return ( ); }); }; const renderNoSegments = () => { return (
No segments yet!

Segment makes it easy for you to define who should be exposed to your feature. The segment is often a collection of constraints and can be reused.

Create your first segment
); }; return ( navigate('/segments/create')} permission={CREATE_SEGMENT} data-testid={NAVIGATE_TO_CREATE_SEGMENT} > New Segment } /> } >
Name Description Created on Created By Action 0} show={renderSegments()} />
( )} />
); };