import { Box, FormControl, SelectChangeEvent, Typography } from "@mui/material"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { getStoragePolicyList } from "../../../../api/api"; import { StoragePolicy } from "../../../../api/dashboard"; import { useAppDispatch } from "../../../../redux/hooks"; import FacebookCircularProgress from "../../../Common/CircularProgress"; import { DenseSelect, SquareChip } from "../../../Common/StyledComponents"; import { SquareMenuItem } from "../../../FileManager/ContextMenu/ContextMenu"; export interface PolicySelectionInputProps { value: number; onChange: (value: number) => void; } const PolicySelectionInput = ({ value, onChange }: PolicySelectionInputProps) => { const { t } = useTranslation("dashboard"); const dispatch = useAppDispatch(); const [policies, setPolicies] = useState([]); const [loading, setLoading] = useState(false); const [policyMap, setPolicyMap] = useState>({}); const handleChange = (event: SelectChangeEvent) => { const { target: { value }, } = event; onChange(value as number); }; useEffect(() => { setLoading(true); dispatch(getStoragePolicyList({ page: 1, page_size: 1000, order_by: "id", order_direction: "asc" })) .then((res) => { setPolicies(res.policies); setPolicyMap( res.policies.reduce( (acc, policy) => { acc[policy.id] = policy; return acc; }, {} as Record, ), ); }) .finally(() => { setLoading(false); }); }, []); return ( ( {!loading ? ( ) : ( )} )} > {policies.length > 0 && policies.map((policy) => ( {policy.name} {t(`policy.${policy.type}`)} ))} ); }; export default PolicySelectionInput;