//Lib import { useState } from 'react'; import classes from './Repo.module.css'; import { IconSettings, IconInfoCircle, IconChevronDown, IconChevronUp, IconBellOff, } from '@tabler/icons-react'; import timestampConverter from '../../helpers/functions/timestampConverter'; import StorageBar from '../UI/StorageBar/StorageBar'; import QuickCommands from './QuickCommands/QuickCommands'; export default function Repo(props) { //Load displayDetails from LocalStorage const displayDetailsFromLS = () => { try { if ( localStorage.getItem('displayDetailsRepo' + props.id) === null ) { localStorage.setItem( 'displayDetailsRepo' + props.id, JSON.stringify(true) ); return true; } else { return JSON.parse( localStorage.getItem('displayDetailsRepo' + props.id) ); } } catch (error) { console.log( 'LocalStorage error, key', 'displayDetailsRepo' + props.id, 'will be removed. Try again.', 'Error message on this key : ', error ); localStorage.removeItem('displayDetailsRepo' + props.id); } }; //States const [displayDetails, setDisplayDetails] = useState(displayDetailsFromLS); //BUTTON : Display or not repo details for ONE repo const displayDetailsForOneHandler = (boolean) => { //Update localStorage localStorage.setItem( 'displayDetailsRepo' + props.id, JSON.stringify(boolean) ); setDisplayDetails(boolean); }; //Status indicator const statusIndicator = () => { return props.status ? classes.statusIndicatorGreen : classes.statusIndicatorRed; }; //Alert indicator const alertIndicator = () => { if (props.alert === 0) { return (
); } }; return ( <> {displayDetails ? ( <>
{props.alias}
{alertIndicator()} {props.comment && (
{props.comment}
)}
Repository Storage Size Storage Used Last change ID Edit
{props.repositoryName} {props.storageSize}Go
{props.lastSave === 0 ? '-' : timestampConverter( props.lastSave )}
#{props.id}
props.repoManageEditHandler() } />
) : ( <>
{props.alias}
{alertIndicator()} {props.comment && (
{props.comment}
)}
{props.lastSave === 0 ? null : timestampConverter(props.lastSave)} #{props.id}
)} {displayDetails ? (
{ displayDetailsForOneHandler(false); }} />
) : (
{ displayDetailsForOneHandler(true); }} />
)} ); }