owncast/web/pages/admin/logs.tsx

41 lines
1.0 KiB
TypeScript
Raw Normal View History

import React, { useState, useEffect, ReactElement } from 'react';
import { LogTable } from '../../components/admin/LogTable';
2020-10-30 02:01:38 +01:00
import { LOGS_ALL, fetchData } from '../../utils/apis';
2020-10-30 02:01:38 +01:00
import { AdminLayout } from '../../components/layouts/AdminLayout';
2020-10-30 02:01:38 +01:00
const FETCH_INTERVAL = 5 * 1000; // 5 sec
export default function Logs() {
const [logs, setLogs] = useState([]);
const getInfo = async () => {
try {
const result = await fetchData(LOGS_ALL);
setLogs(result);
} catch (error) {
console.log('==== error', error);
2020-10-30 02:01:38 +01:00
}
};
useEffect(() => {
let getStatusIntervalId = null;
setInterval(getInfo, FETCH_INTERVAL);
getInfo();
getStatusIntervalId = setInterval(getInfo, FETCH_INTERVAL);
// returned function will be called on component unmount
return () => {
clearInterval(getStatusIntervalId);
};
}, []);
return <LogTable logs={logs} initialPageSize={20} />;
2020-10-30 02:01:38 +01:00
}
Logs.getLayout = function getLayout(page: ReactElement) {
return <AdminLayout page={page} />;
};