import { memo, useEffect, useMemo, useState } from "react"; import { Classes, NonIdealState, Spinner, Switch } from "@blueprintjs/core"; import AuxiliaryDialog from "Components/AuxiliaryDialog"; import { ListWrapper, Pagination, Toolbar } from "Components/DataList"; import LogEntry from "./LogEntry"; import { ZoteroRoamLog } from "../../api/logging"; import { useBool, usePagination } from "@hooks"; import { CustomClasses } from "../../constants"; import "./_index.sass"; const itemsPerPage = 20; function LoggerList({ items }: { items: ZoteroRoamLog[]}){ const [showAllEntries, { toggle: toggleShowAll }] = useBool(false); const { currentPage, pageLimits, setCurrentPage } = usePagination({ itemsPerPage }); const visibleItems = useMemo(() => { return showAllEntries ? items : items.filter(it => it.level == "error"); }, [items, showAllEntries]); useEffect(() => { setCurrentPage(1); }, [items, visibleItems, setCurrentPage]); return
{visibleItems.length == 0 ? : {visibleItems .sort((a, b) => a.timestamp > b.timestamp ? -1 : 1) .slice(...pageLimits) .map((entry, j) => )} }
; } type LoggerProps = { isOpen: boolean, onClose: () => void }; const Logger = memo(function Logger({ isOpen, onClose }: LoggerProps){ const [logData, setLogData] = useState(null); useEffect(() => { try { const items = window.zoteroRoam.logs; setLogData(items); } catch(e) { console.error(e); setLogData([]); } }, []); return (
{logData == null ? : }
); }); export default Logger;