mirror of https://github.com/morpheus65535/bazarr
80 lines
2.0 KiB
TypeScript
80 lines
2.0 KiB
TypeScript
import React, { FunctionComponent, useMemo } from "react";
|
|
import { Badge, Card, Col, Container, Row } from "react-bootstrap";
|
|
import { Helmet } from "react-helmet";
|
|
import { useSystemReleases } from "../../@redux/hooks";
|
|
import { AsyncOverlay } from "../../components";
|
|
import { BuildKey } from "../../utilities";
|
|
|
|
interface Props {}
|
|
|
|
const SystemReleasesView: FunctionComponent<Props> = () => {
|
|
const releases = useSystemReleases();
|
|
|
|
return (
|
|
<Container fluid className="px-3 py-4 bg-light">
|
|
<Helmet>
|
|
<title>Releases - Bazarr (System)</title>
|
|
</Helmet>
|
|
<Row>
|
|
<AsyncOverlay ctx={releases}>
|
|
{({ content }) => {
|
|
return (
|
|
<React.Fragment>
|
|
{content?.map((v, idx) => (
|
|
<Col xs={12} key={BuildKey(idx, v.date)}>
|
|
<InfoElement {...v}></InfoElement>
|
|
</Col>
|
|
))}
|
|
</React.Fragment>
|
|
);
|
|
}}
|
|
</AsyncOverlay>
|
|
</Row>
|
|
</Container>
|
|
);
|
|
};
|
|
|
|
const headerBadgeCls = "mr-2";
|
|
|
|
const InfoElement: FunctionComponent<ReleaseInfo> = ({
|
|
name,
|
|
body,
|
|
date,
|
|
prerelease,
|
|
current,
|
|
}) => {
|
|
const infos = useMemo(
|
|
() => body.map((v) => v.replace(/(\s\[.*?\])\(.*?\)/, "")),
|
|
[body]
|
|
);
|
|
return (
|
|
<Card className="mb-4 mx-3 d-flex flex-grow-1">
|
|
<Card.Header>
|
|
<span className={headerBadgeCls}>{name}</span>
|
|
<Badge className={headerBadgeCls} variant="info">
|
|
{date}
|
|
</Badge>
|
|
<Badge
|
|
className={headerBadgeCls}
|
|
variant={prerelease ? "danger" : "success"}
|
|
>
|
|
{prerelease ? "Development" : "Master"}
|
|
</Badge>
|
|
<Badge className={headerBadgeCls} hidden={!current} variant="primary">
|
|
Installed
|
|
</Badge>
|
|
</Card.Header>
|
|
<Card.Body>
|
|
<Card.Text>
|
|
From newest to oldest:
|
|
{infos.map((v, idx) => (
|
|
<li key={idx}>{v}</li>
|
|
))}
|
|
</Card.Text>
|
|
</Card.Body>
|
|
</Card>
|
|
);
|
|
};
|
|
|
|
export default SystemReleasesView;
|