Fix sidebar items not showing up with partial permissions (#1949)

* Skip navigator's customerSearch query on dashboard load

* Fetch extensions list only with MANAGE_APPS permission

* Show sidebar sections with partial permissions

* Trigger deployment

* Change skipping query from always to when query is empty
This commit is contained in:
Michał Droń 2022-03-25 13:41:54 +01:00 committed by GitHub
parent cf7a51ab8e
commit e186b2f8c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 6 deletions

View file

@ -1,3 +1,4 @@
import { useUserPermissions } from "@saleor/auth/hooks/useUserPermissions";
import {
AppExtensionMountEnum,
ExtensionListQuery,
@ -64,6 +65,10 @@ export const useExtensions = <T extends AppExtensionMountEnum>(
mountList: T[]
): Record<T, Extension[]> => {
const { openApp } = useExternalApp();
const permissions = useUserPermissions();
const extensionsPermissions = permissions?.find(
perm => perm.code === PermissionEnum.MANAGE_APPS
);
const { data } = useExtensionListQuery({
fetchPolicy: "cache-first",
@ -71,7 +76,8 @@ export const useExtensions = <T extends AppExtensionMountEnum>(
filter: {
mount: mountList
}
}
},
skip: !extensionsPermissions
});
const extensions = filterAndMapToTarget(

View file

@ -248,7 +248,10 @@ function useMenuStructure(
const userPermissions = (user?.userPermissions || []).map(
permission => permission.code
);
return (menuItem.permissions || []).every(permission =>
if (!menuItem?.permissions) {
return true;
}
return menuItem.permissions.some(permission =>
userPermissions.includes(permission)
);
};
@ -259,12 +262,10 @@ function useMenuStructure(
return [
menuItems.reduce(
(resultItems: FilterableMenuItem[], menuItem: FilterableMenuItem) => {
const { children } = menuItem;
if (!isMenuItemPermitted(menuItem)) {
return resultItems;
}
const { children } = menuItem;
const filteredChildren = children
? getFilteredMenuItems(children)
: undefined;

View file

@ -36,7 +36,8 @@ function useQuickSearch(
variables: {
...DEFAULT_INITIAL_SEARCH_DATA,
first: 5
}
},
skip: !query
});
const [{ data: catalog }, searchCatalog] = useSearchCatalog(5);
const [createOrder] = useOrderDraftCreateMutation({