From 2c6564ecf76a41c40c987580fedf7d94258991f7 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 31 Oct 2024 12:45:13 +0100 Subject: [PATCH] fixes after merge --- .../Map/Subcomponents/AddButton.tsx | 28 ++++++++--------- src/Components/Map/hooks/usePermissions.tsx | 31 +++++++------------ src/Components/Profile/ProfileView.tsx | 4 +-- src/Components/Profile/Templates/TabsView.tsx | 11 ++++--- src/Utils/MarkerIconFactory.ts | 2 +- 5 files changed, 35 insertions(+), 41 deletions(-) diff --git a/src/Components/Map/Subcomponents/AddButton.tsx b/src/Components/Map/Subcomponents/AddButton.tsx index dc8242f5..025c7e04 100644 --- a/src/Components/Map/Subcomponents/AddButton.tsx +++ b/src/Components/Map/Subcomponents/AddButton.tsx @@ -1,23 +1,21 @@ import * as React from 'react' import { useLayers } from '../hooks/useLayers' -import { useHasUserPermission } from '../hooks/usePermissions'; +import { useHasUserPermission } from '../hooks/usePermissions' +export default function AddButton ({ triggerAction }: { triggerAction: React.Dispatch> }) { + const layers = useLayers() + const hasUserPermission = useHasUserPermission() -export default function AddButton({ triggerAction }: { triggerAction: React.Dispatch> }) { + const canAddItems = () => { + let canAdd = false + layers.map(layer => { + if (layer.api?.createItem && hasUserPermission(layer.api.collectionName!, 'create', undefined, layer) && layer.listed) canAdd = true + return null + }) + return canAdd + } - const layers = useLayers(); - const hasUserPermission = useHasUserPermission(); - - const canAddItems = () => { - let canAdd = false; - layers.map(layer => { - if (layer.api?.createItem && hasUserPermission(layer.api.collectionName!, "create", undefined, layer) && layer.listed) canAdd = true; - }) - return canAdd; - } - - - return ( + return ( <>{ canAddItems() ?
diff --git a/src/Components/Map/hooks/usePermissions.tsx b/src/Components/Map/hooks/usePermissions.tsx index f7227c19..6ea8a532 100644 --- a/src/Components/Map/hooks/usePermissions.tsx +++ b/src/Components/Map/hooks/usePermissions.tsx @@ -76,15 +76,10 @@ function usePermissionsManager (initialPermissions: Permission[]): { item?: Item, layer?: LayerProps ) => { - - console.log(layer?.name); - console.log(user?.role.name); - console.log(action); - console.log(permissions.filter(p => p.policy.name === user?.role.name || (p.policy.name === "$t:public_label" && !user))); - - - - + console.log(layer?.name) + console.log(user?.role.name) + console.log(action) + console.log(permissions.filter(p => p.policy.name === user?.role.name || (p.policy.name === '$t:public_label' && !user))) const evaluateCondition = (condition: any) => { if (condition.user_created?._eq === '$CURRENT_USER') { @@ -105,34 +100,32 @@ function usePermissionsManager (initialPermissions: Permission[]): { andCondition._or ? andCondition._or.some((orCondition: any) => evaluateCondition(orCondition)) : evaluateCondition(andCondition) - ); - }; - if (collectionName === "items" && action === "create" && layer?.public_edit_items) return true; + ) + } + if (collectionName === 'items' && action === 'create' && layer?.public_edit_items) return true // Bedingung für leere Berechtigungen nur, wenn NICHT item und create - if (permissions.length === 0) return true; - else if (user && user.role.id === adminRole) return true; + if (permissions.length === 0) return true + else if (user && user.role.id === adminRole) return true else { return permissions.some(p => p.action === action && p.collection === collectionName && - ( (p.policy.name === user?.role.name && ( !item || evaluatePermissions(p.permissions) )) || - (p.policy === "$t:public_label" && + (p.policy === '$t:public_label' && ( (layer?.public_edit_items || item?.layer?.public_edit_items) && (!item || evaluatePermissions(p.permissions)) )) ) - - ); + ) } }, [permissions, user, adminRole] - ); + ) return { permissions, setPermissionApi, setPermissionData, setAdminRole, hasUserPermission } } diff --git a/src/Components/Profile/ProfileView.tsx b/src/Components/Profile/ProfileView.tsx index 6e126bfe..97d77566 100644 --- a/src/Components/Profile/ProfileView.tsx +++ b/src/Components/Profile/ProfileView.tsx @@ -24,7 +24,7 @@ export function ProfileView ({ userType, attestationApi }: { userType: string, a const [offers, setOffers] = useState>([]) const [needs, setNeeds] = useState>([]) const [loading, setLoading] = useState(false) - const [template, setTemplate] = useState('') + const [template/* , setTemplate */] = useState('') const location = useLocation() const items = useItems() @@ -151,7 +151,7 @@ export function ProfileView ({ userType, attestationApi }: { userType: string, a } - {template == "tabs" && + {template === 'tabs' && linkItem(id, item, updateItem)} unlinkItem={(id) => unlinkItem(id, item, updateItem)}/> } diff --git a/src/Components/Profile/Templates/TabsView.tsx b/src/Components/Profile/Templates/TabsView.tsx index c92c5a15..751d833c 100644 --- a/src/Components/Profile/Templates/TabsView.tsx +++ b/src/Components/Profile/Templates/TabsView.tsx @@ -12,6 +12,9 @@ import { timeAgo } from '../../../Utils/TimeAgo' // eslint-disable-next-line no-unused-vars export const TabsView = ({ attestations, userType, item, offers, needs, relations, updatePermission, loading, linkItem, unlinkItem }: { attestations: Array, userType: string, item: Item, offers: Array, needs: Array, relations: Array, updatePermission: boolean, loading: boolean, linkItem: (id: string) => Promise, unlinkItem: (id: string) => Promise }) => { + const addFilterTag = useAddFilterTag() + const [activeTab, setActiveTab] = useState() + const navigate = useNavigate() const [addItemPopupType] = useState('') @@ -34,10 +37,10 @@ export const TabsView = ({ attestations, userType, item, offers, needs, relation const updateActiveTab = useCallback((id: number) => { setActiveTab(id) - const params = new URLSearchParams(window.location.search); - params.set("tab", `${id}`); - const newUrl = location.pathname + "?" + params.toString(); - window.history.pushState({}, '', newUrl); + const params = new URLSearchParams(window.location.search) + params.set('tab', `${id}`) + const newUrl = location.pathname + '?' + params.toString() + window.history.pushState({}, '', newUrl) // eslint-disable-next-line react-hooks/exhaustive-deps }, [location.pathname]) diff --git a/src/Utils/MarkerIconFactory.ts b/src/Utils/MarkerIconFactory.ts index 51c40147..d6c95172 100644 --- a/src/Utils/MarkerIconFactory.ts +++ b/src/Utils/MarkerIconFactory.ts @@ -36,7 +36,7 @@ const addIcon = (icon: string) => { return '' case 'puzzle': return '' - case "staff-snake": + case 'staff-snake': return '' default: return ''