import { Button, Container, IconButton, List, ListItem, ListItemText, Stack, TextField, Typography, } from '@mui/material'; import DeleteIcon from '@mui/icons-material/Delete'; import EditIcon from '@mui/icons-material/Edit'; import CheckIcon from '@mui/icons-material/Check'; import CloseIcon from '@mui/icons-material/Close'; import { useState } from 'react'; import { v4 as uuidv4 } from 'uuid'; import { useAreas } from '../hooks/dataHooks'; import { useDatabase } from '../context/DBProvider'; export const ManageAreasScreen = () => { const db = useDatabase(); const areas = useAreas(); const [name, setName] = useState(''); const [editingAreaId, setEditingAreaId] = useState(null); const [editName, setEditName] = useState(''); const addArea = async () => { if (!name) return; await db.areas.add({ id: uuidv4(), name, created_at: Date.now(), updated_at: Date.now() }); setName(''); }; const startEditing = (areaId: string, currentName: string) => { setEditingAreaId(areaId); setEditName(currentName); }; const saveArea = async () => { if (!editingAreaId || !editName) return; await db.areas.update(editingAreaId, { name: editName, updated_at: Date.now() }); setEditingAreaId(null); setEditName(''); }; const cancelEditing = () => { setEditingAreaId(null); setEditName(''); }; const deleteArea = async (areaId: string) => { await db.areas.delete(areaId); if (editingAreaId === areaId) { cancelEditing(); } }; return ( Manage Areas setName(event.target.value)} /> {areas.map((area) => ( {editingAreaId === area.id ? ( setEditName(event.target.value)} /> ) : ( startEditing(area.id, area.name)} aria-label={`Edit ${area.name}`} size="small" > deleteArea(area.id)} aria-label={`Delete ${area.name}`} size="small" > )} ))} ); };