import * as React from "react" import { useRemoveItem } from "../../hooks/useItems"; import { useMap } from "react-leaflet"; import { ItemFormPopupProps } from "../ItemFormPopup"; import { LatLng } from "leaflet"; import { Item } from "../../../../types"; import { toast } from "react-toastify"; import { useHasUserPermission } from "../../hooks/usePermissions"; import { useAuth } from "../../../Auth"; export function HeaderView({ item, title, avatar, owner, setItemFormPopup }: { item: Item, title?: string, avatar?: string, owner?: string, setItemFormPopup?: React.Dispatch> }) { const [loading, setLoading] = React.useState(false); const removeItem = useRemoveItem(); const map = useMap(); const hasUserPermission = useHasUserPermission(); const { user } = useAuth(); const removeItemFromMap = async (event: React.MouseEvent) => { setLoading(true); let success = false; try { await item.layer?.api?.deleteItem!(item.id) success = true; } catch (error) { toast.error(error.toString()); } if (success) { removeItem(item); toast.success("Item deleted"); } setLoading(false); map.closePopup(); event.stopPropagation(); } const openEditPopup = (event: React.MouseEvent) => { event.stopPropagation(); map.closePopup(); if (setItemFormPopup) setItemFormPopup({ position: new LatLng(item.position.coordinates[1], item.position.coordinates[0]), layer: item.layer!, item: item, setItemFormPopup: setItemFormPopup }) } return (
{ avatar ?
: "" } {title ? title : item.name}
{(item.layer?.api?.deleteItem || item.layer?.api?.updateItem) && ((user && owner === user.id) || owner == undefined) && (hasUserPermission(item.layer.api?.collectionName!, "delete") || hasUserPermission(item.layer.api?.collectionName!, "update")) &&
    {item.layer.api.updateItem && hasUserPermission(item.layer.api?.collectionName!, "update") &&
  • } {item.layer.api.deleteItem && hasUserPermission(item.layer.api?.collectionName!, "delete") &&
  • {loading ? : }
  • }
}
) }