2023-01-15 23:11:44 -08:00
|
|
|
import React, { useState, useEffect, ReactElement } from 'react';
|
2021-02-14 01:30:42 -08:00
|
|
|
import ReactMarkdown from 'react-markdown';
|
|
|
|
import { Table, Typography } from 'antd';
|
2022-04-19 19:57:27 -07:00
|
|
|
import { getGithubRelease } from '../../utils/apis';
|
2020-11-02 18:40:12 -08:00
|
|
|
|
2023-01-15 23:11:44 -08:00
|
|
|
import { AdminLayout } from '../../components/layouts/AdminLayout';
|
|
|
|
|
2020-11-05 18:30:14 -08:00
|
|
|
const { Title } = Typography;
|
|
|
|
|
2022-09-07 09:00:28 +02:00
|
|
|
const AssetTable = assets => {
|
2020-11-16 14:32:37 -08:00
|
|
|
const data = Object.values(assets) as object[];
|
2020-11-13 04:43:27 -08:00
|
|
|
|
|
|
|
const columns = [
|
|
|
|
{
|
2021-02-14 01:30:42 -08:00
|
|
|
title: 'Name',
|
|
|
|
dataIndex: 'name',
|
|
|
|
key: 'name',
|
|
|
|
render: (text, entry) => <a href={entry.browser_download_url}>{text}</a>,
|
2020-11-13 04:43:27 -08:00
|
|
|
},
|
|
|
|
{
|
2021-02-14 01:30:42 -08:00
|
|
|
title: 'Size',
|
|
|
|
dataIndex: 'size',
|
|
|
|
key: 'size',
|
|
|
|
render: text => `${(text / 1024 / 1024).toFixed(2)} MB`,
|
2020-11-13 04:43:27 -08:00
|
|
|
},
|
|
|
|
];
|
|
|
|
|
2021-05-22 23:27:51 -07:00
|
|
|
return (
|
|
|
|
<Table
|
|
|
|
dataSource={data}
|
|
|
|
columns={columns}
|
|
|
|
rowKey={record => record.id}
|
|
|
|
size="large"
|
|
|
|
pagination={false}
|
|
|
|
/>
|
|
|
|
);
|
2022-09-07 09:00:28 +02:00
|
|
|
};
|
2020-11-13 04:43:27 -08:00
|
|
|
|
2022-09-07 09:00:28 +02:00
|
|
|
const Logs = () => {
|
2020-11-02 18:40:12 -08:00
|
|
|
const [release, setRelease] = useState({
|
2021-02-14 01:30:42 -08:00
|
|
|
html_url: '',
|
|
|
|
name: '',
|
2020-11-02 18:40:12 -08:00
|
|
|
created_at: null,
|
2021-02-14 01:30:42 -08:00
|
|
|
body: '',
|
2020-11-02 18:40:12 -08:00
|
|
|
assets: [],
|
|
|
|
});
|
|
|
|
|
|
|
|
const getRelease = async () => {
|
|
|
|
try {
|
2020-11-03 18:15:38 -08:00
|
|
|
const result = await getGithubRelease();
|
2020-11-02 18:40:12 -08:00
|
|
|
setRelease(result);
|
|
|
|
} catch (error) {
|
2021-02-14 01:30:42 -08:00
|
|
|
console.log('==== error', error);
|
2020-11-02 18:40:12 -08:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
getRelease();
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
if (!release) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
2021-02-14 16:52:31 -08:00
|
|
|
<div className="upgrade-page">
|
2020-11-05 18:30:14 -08:00
|
|
|
<Title level={2}>
|
2020-11-02 18:40:12 -08:00
|
|
|
<a href={release.html_url}>{release.name}</a>
|
2020-11-05 18:30:14 -08:00
|
|
|
</Title>
|
|
|
|
<Title level={5}>{new Date(release.created_at).toDateString()}</Title>
|
2021-02-14 01:30:42 -08:00
|
|
|
<ReactMarkdown>{release.body}</ReactMarkdown>
|
|
|
|
<h3>Downloads</h3>
|
2020-11-02 18:40:12 -08:00
|
|
|
<AssetTable {...release.assets} />
|
|
|
|
</div>
|
|
|
|
);
|
2022-09-07 09:00:28 +02:00
|
|
|
};
|
2023-01-15 23:11:44 -08:00
|
|
|
|
|
|
|
Logs.getLayout = function getLayout(page: ReactElement) {
|
|
|
|
return <AdminLayout page={page} />;
|
|
|
|
};
|
|
|
|
|
2022-09-07 09:00:28 +02:00
|
|
|
export default Logs;
|