robosats/frontend/src/pro/Widgets/Federation.tsx
Reckless_Satoshi 7eaaab7ae3 Fix PRO
2023-12-02 10:40:59 +00:00

51 lines
1.6 KiB
TypeScript

import React, { useContext } from 'react';
import { AppContext, type AppContextProps } from '../../contexts/AppContext';
import { FederationContext, type UseFederationStoreType } from '../../contexts/FederationContext';
import { Paper } from '@mui/material';
import { type GridItem } from 'react-grid-layout';
import FederationTable from '../../components/FederationTable';
interface FederationWidgetProps {
layout: GridItem;
gridCellSize: number;
style?: React.StyleHTMLAttributes<HTMLElement>;
className?: string;
onMouseDown?: () => void;
onMouseUp?: () => void;
onTouchEnd?: () => void;
}
const FederationWidget = React.forwardRef(function Component(
{
layout,
gridCellSize,
style,
className,
onMouseDown,
onMouseUp,
onTouchEnd,
}: FederationWidgetProps,
ref,
) {
const { open, setOpen } = useContext<AppContextProps>(AppContext);
const { federation, setFocusedCoordinator, coordinatorUpdatedAt } =
useContext<UseFederationStoreType>(FederationContext);
return React.useMemo(() => {
return (
<Paper elevation={3} style={{ width: '100%', height: '100%' }}>
<FederationTable
federation={federation.coordinators}
// setFederation={setFederation}
setFocusedCoordinator={setFocusedCoordinator}
openCoordinator={() => setOpen({ ...open, coordinator: true })}
maxWidth={layout.w * gridCellSize} // EM units
maxHeight={layout.h * gridCellSize} // EM units
/>
</Paper>
);
}, [federation, coordinatorUpdatedAt]);
});
export default FederationWidget;