import React, { useState } from 'react'; import { Tag } from 'antd'; import cn from 'classnames'; import { Loader, Button, TextLink, NoContent, Pagination, PageTitle, Divider, Icon } from 'UI'; import withPageTitle from 'HOCs/withPageTitle'; import stl from './sites.module.css'; import NewSiteForm from './NewSiteForm'; import SiteSearch from './SiteSearch'; import AddProjectButton from './AddProjectButton'; import InstallButton from './InstallButton'; import ProjectKey from './ProjectKey'; import { sliceListPerPage } from 'App/utils'; import AnimatedSVG, { ICONS } from 'Shared/AnimatedSVG/AnimatedSVG'; import { useModal } from 'App/components/Modal'; import CaptureRate from 'Shared/SessionSettings/components/CaptureRate'; import { BranchesOutlined } from '@ant-design/icons'; import { observer } from 'mobx-react-lite'; import { useStore } from 'App/mstore' type Project = { id: string; name: string; conditionsCount: number; platform: 'web' | 'mobile'; host: string; projectKey: string; sampleRate: number; }; const Sites = () => { const { projectsStore, userStore } = useStore(); const user = userStore.account; const sites = projectsStore.list; const loading = projectsStore.sitesLoading; const init = projectsStore.initProject const [searchQuery, setSearchQuery] = useState(''); const [showCaptureRate, setShowCaptureRate] = useState(true); const [activeProject, setActiveProject] = useState(null); const [page, setPage] = useState(1); const pageSize: number = 10; const isAdmin = user.admin || user.superAdmin; const filteredSites = sites.filter((site: { name: string }) => site.name.toLowerCase().includes(searchQuery.toLowerCase()) ); const { showModal, hideModal } = useModal(); const EditButton = ({ isAdmin, onClick }: { isAdmin: boolean; onClick: () => void }) => { const _onClick = () => { onClick(); showModal(, { right: true }); }; return {project.conditionsCount > 0 ? ( ) : null}
init(project)} />
); return (
Projects
} actionButton={ } />
setSearchQuery(value)} />
No matching results
} size="small" show={!loading && filteredSites.length === 0} >
Project Name
Key
Capture Rate
{sliceListPerPage(filteredSites, page - 1, pageSize).map((project: Project) => ( ))}
updatePage(page)} limit={pageSize} />
); }; export default withPageTitle('Projects - OpenReplay Preferences')(observer(Sites));