You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bazarr/frontend/src/Wanted/generic/index.tsx

56 lines
1.4 KiB

import { faSearch } from "@fortawesome/free-solid-svg-icons";
import { capitalize } from "lodash";
import React from "react";
import { Container, Row } from "react-bootstrap";
import { Helmet } from "react-helmet";
import { Column } from "react-table";
import { AsyncPageTable, ContentHeader } from "../../components";
interface Props<T extends Wanted.Base> {
type: "movies" | "series";
columns: Column<T>[];
state: Readonly<AsyncOrderState<T>>;
loader: (start: number, length: number) => void;
searchAll: () => Promise<void>;
}
function GenericWantedView<T extends Wanted.Base>({
type,
columns,
state,
loader,
searchAll,
}: Props<T>) {
const typeName = capitalize(type);
const dataCount = Object.keys(state.data.items).length;
return (
<Container fluid>
<Helmet>
<title>Wanted {typeName} - Bazarr</title>
</Helmet>
<ContentHeader>
<ContentHeader.AsyncButton
disabled={dataCount === 0}
promise={searchAll}
icon={faSearch}
>
Search All
</ContentHeader.AsyncButton>
</ContentHeader>
<Row>
<AsyncPageTable
aos={state}
loader={loader}
emptyText={`No Missing ${typeName} Subtitles`}
columns={columns}
data={[]}
></AsyncPageTable>
</Row>
</Container>
);
}
export default GenericWantedView;