1
import React, { FC, useCallback, useState } from 'react';
2
import ScrapePoolList, { ScrapePoolNamesListProps } from './ScrapePoolList';
3
import { API_PATH } from '../../constants/constants';
4
import { usePathPrefix } from '../../contexts/PathPrefixContext';
5
import { useFetch } from '../../hooks/useFetch';
6
import { withStatusIndicator } from '../../components/withStatusIndicator';
7
import { setQueryParam, getQueryParam } from '../../utils/index';
9
const ScrapePoolListWithStatusIndicator = withStatusIndicator(ScrapePoolList);
11
const scrapePoolQueryParam = 'scrapePool';
13
const Targets: FC = () => {
14
// get the initial name of selected scrape pool from query args
15
const scrapePool = getQueryParam(scrapePoolQueryParam) || null;
17
const [selectedPool, setSelectedPool] = useState<string | null>(scrapePool);
19
const onPoolSelect = useCallback(
21
setSelectedPool(name);
22
setQueryParam(scrapePoolQueryParam, name);
27
const pathPrefix = usePathPrefix();
28
const { response, error, isLoading } = useFetch<ScrapePoolNamesListProps>(`${pathPrefix}/${API_PATH}/scrape_pools`);
29
const { status: responseStatus } = response;
30
const badResponse = responseStatus !== 'success' && responseStatus !== 'start fetching';
35
<ScrapePoolListWithStatusIndicator
36
error={badResponse ? new Error(responseStatus) : error}
38
componentTitle="Targets"
39
selectedPool={selectedPool}
40
onPoolSelect={onPoolSelect}
47
export default Targets;