@@ -13,6 +13,12 @@ import type { ComponentPicker } from '../../component-picker';
1313import type { ContentLibrary , BlockTypeMetadata } from '../../data/api' ;
1414import { useContentLibrary } from '../../data/apiHooks' ;
1515import { useComponentPickerContext } from './ComponentPickerContext' ;
16+ import { useValidateUserPermissions } from '@src/authz/data/hooks' ;
17+ import { CONTENT_LIBRARY_PERMISSIONS } from '@src/authz/constants' ;
18+
19+ const LIBRARY_PERMISSIONS = [
20+ CONTENT_LIBRARY_PERMISSIONS . PUBLISH_LIBRARY_CONTENT ,
21+ ] ;
1622
1723export interface ComponentEditorInfo {
1824 usageKey : string ;
@@ -25,6 +31,7 @@ export type LibraryContextData = {
2531 libraryId : string ;
2632 libraryData ?: ContentLibrary ;
2733 readOnly : boolean ;
34+ canPublish : boolean ;
2835 isLoadingLibraryData : boolean ;
2936 /** The ID of the current collection/container, on the sidebar OR page */
3037 collectionId : string | undefined ;
@@ -107,6 +114,11 @@ export const LibraryProvider = ({
107114 componentPickerMode,
108115 } = useComponentPickerContext ( ) ;
109116
117+ const permissions = LIBRARY_PERMISSIONS . map ( action => ( { action, scope : libraryId } ) ) ;
118+
119+ const { isLoading : isLoadingUserPermissions , data : userPermissions } = useValidateUserPermissions ( permissions ) ;
120+ const canPublish = userPermissions ? userPermissions [ 0 ] ?. allowed : false ;
121+ // TODO change to use canEdit from userPermissions later
110122 const readOnly = ! ! componentPickerMode || ! libraryData ?. canEditLibrary ;
111123
112124 // Parse the initial collectionId and/or container ID(s) from the current URL params
@@ -131,7 +143,8 @@ export const LibraryProvider = ({
131143 containerId,
132144 setContainerId,
133145 readOnly,
134- isLoadingLibraryData,
146+ canPublish,
147+ isLoadingLibraryData : isLoadingLibraryData || isLoadingUserPermissions ,
135148 showOnlyPublished,
136149 extraFilter,
137150 isCreateCollectionModalOpen,
@@ -154,7 +167,9 @@ export const LibraryProvider = ({
154167 containerId ,
155168 setContainerId ,
156169 readOnly ,
170+ canPublish ,
157171 isLoadingLibraryData ,
172+ isLoadingUserPermissions ,
158173 showOnlyPublished ,
159174 extraFilter ,
160175 isCreateCollectionModalOpen ,
0 commit comments