diff --git a/src/Components/AppShell/NavBar.tsx b/src/Components/AppShell/NavBar.tsx index 1efeda0a..02650dfc 100644 --- a/src/Components/AppShell/NavBar.tsx +++ b/src/Components/AppShell/NavBar.tsx @@ -2,13 +2,30 @@ import { useAuth } from "../Auth" import { Link } from "react-router-dom"; import { toast } from "react-toastify"; import QuestionMarkIcon from '@heroicons/react/24/outline/QuestionMarkCircleIcon' -import * as React from "react"; +import { useEffect, useState } from "react"; +import { useItems } from "../Map/hooks/useItems"; +import { Item } from "../../types"; export default function NavBar({ appName, nameWidth = 200}: { appName: string, nameWidth?: number }) { - const { isAuthenticated, user, logout, token } = useAuth(); + const { isAuthenticated, user, logout } = useAuth(); + + const [userProfile, setUserProfile] = useState({}as Item); + const items = useItems(); + + useEffect(() => { + const profile = user && items.find(i => i.user_created.id === user.id && i.type === "user"); + profile ? setUserProfile(profile) : setUserProfile({id: crypto.randomUUID(), name: user?.first_name, text: ""}); + + }, [user, items]) + + useEffect(() => { + + }, [userProfile]) + + const onLogout = () => { toast.promise( @@ -51,9 +68,9 @@ export default function NavBar({ appName, nameWidth = 200}: { appName: string, n {isAuthenticated ?
- {user?.avatar ?
+ { userProfile?.image?
-
: <>}
{user?.first_name}
@@ -64,7 +81,7 @@ export default function NavBar({ appName, nameWidth = 200}: { appName: string, n diff --git a/src/Components/Map/Subcomponents/ItemFormPopup.tsx b/src/Components/Map/Subcomponents/ItemFormPopup.tsx index c20aeaa4..a7963008 100644 --- a/src/Components/Map/Subcomponents/ItemFormPopup.tsx +++ b/src/Components/Map/Subcomponents/ItemFormPopup.tsx @@ -64,7 +64,6 @@ export function ItemFormPopup(props: ItemFormPopupProps) { - if(props.item) { let success = false; try { @@ -74,6 +73,8 @@ export function ItemFormPopup(props: ItemFormPopupProps) { toast.error(error.toString()); } if(success) { + console.log(props.item); + updateItem({...props.item, ...formItem}); toast.success("Item updated"); } @@ -81,10 +82,12 @@ export function ItemFormPopup(props: ItemFormPopupProps) { map.closePopup(); } else { + const item = items.find(i => i.user_created.id === user?.id && i.type === props.layer.itemType) const uuid = crypto.randomUUID(); let success = false; try { - await props.layer.api?.createItem!({...formItem, id: uuid }); + props.layer.onlyOnePerOwner && item && await props.layer.api?.updateItem!({...formItem, id: item?.id }); + (!props.layer.onlyOnePerOwner || !item) && await props.layer.api?.createItem!({...formItem, id: uuid, name: formItem.name ? formItem.name : user?.first_name }); success = true; } catch (error) { toast.error(error.toString()); @@ -92,11 +95,8 @@ export function ItemFormPopup(props: ItemFormPopupProps) { if(success) { console.log(props.layer); - if(props.layer.onlyOnePerOwner){ - const item = items.find(item => item.layer == props.layer && item.user_created?.id == user?.id); - item && removeItem(item); - } - addItem({...formItem, id: uuid, layer: props.layer, user_created: user, type: props.layer.itemType }); + props.layer.onlyOnePerOwner && item && updateItem({...item, ...formItem}); + (!props.layer.onlyOnePerOwner || !item) && addItem({...formItem, name: formItem.name ? formItem.name : user?.first_name , user_created: user, type: props.layer.itemType, id: uuid, layer: props.layer}); toast.success("New item created"); resetFilterTags(); } diff --git a/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx b/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx index 400b1f1f..db2312fa 100644 --- a/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx +++ b/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx @@ -80,7 +80,7 @@ export function HeaderView({ item, api, editCallback, deleteCallback, setPositio