shlink-web-client/src/visits/ShortUrlVisitsHeader.tsx

46 lines
1.7 KiB
TypeScript
Raw Normal View History

import { UncontrolledTooltip } from 'reactstrap';
import { ExternalLink } from 'react-external-link';
import { ShortUrlDetail } from '../short-urls/reducers/shortUrlDetail';
import { Time } from '../utils/dates/Time';
import { ShortUrlVisits } from './reducers/shortUrlVisits';
import { VisitsHeader } from './VisitsHeader';
import './ShortUrlVisitsHeader.scss';
interface ShortUrlVisitsHeaderProps {
shortUrlDetail: ShortUrlDetail;
shortUrlVisits: ShortUrlVisits;
goBack: () => void;
}
export const ShortUrlVisitsHeader = ({ shortUrlDetail, shortUrlVisits, goBack }: ShortUrlVisitsHeaderProps) => {
const { shortUrl, loading } = shortUrlDetail;
const { visits } = shortUrlVisits;
const shortLink = shortUrl?.shortUrl ?? '';
const longLink = shortUrl?.longUrl ?? '';
2021-03-05 17:44:15 +03:00
const title = shortUrl?.title;
2022-03-26 14:17:42 +03:00
const renderDate = () => (!shortUrl ? <small>Loading...</small> : (
<span>
<b id="created" className="short-url-visits-header__created-at">
<Time date={shortUrl.dateCreated} relative />
</b>
<UncontrolledTooltip placement="bottom" target="created">
<Time date={shortUrl.dateCreated} />
</UncontrolledTooltip>
</span>
2022-03-26 14:17:42 +03:00
));
const visitsStatsTitle = <>Visits for <ExternalLink href={shortLink} /></>;
return (
<VisitsHeader title={visitsStatsTitle} goBack={goBack} visits={visits} shortUrl={shortUrl}>
<hr />
<div>Created: {renderDate()}</div>
<div className="long-url-container">
2021-03-05 17:44:15 +03:00
{`${title ? 'Title' : 'Long URL'}: `}
{loading && <small>Loading...</small>}
2021-03-05 17:44:15 +03:00
{!loading && <ExternalLink href={longLink}>{title ?? longLink}</ExternalLink>}
</div>
</VisitsHeader>
);
};