diff --git a/frontend/src/components/dir-view-mode/dir-files.js b/frontend/src/components/dir-view-mode/dir-files.js index 9a7697ce01..8b576ad094 100644 --- a/frontend/src/components/dir-view-mode/dir-files.js +++ b/frontend/src/components/dir-view-mode/dir-files.js @@ -362,8 +362,20 @@ class DirFiles extends React.Component { }; render() { - const { repoID, currentRepoInfo } = this.props; - const repoEncrypted = currentRepoInfo.encrypted; + const { repoID, currentRepoInfo, userPerm } = this.props; + const { encrypted: repoEncrypted } = currentRepoInfo; + + let canModifyFile = false; + if (['rw', 'cloud-edit'].indexOf(userPerm) != -1) { + canModifyFile = true; + } else { + const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm); + if (isCustomPermission) { + const { modify } = customPermission.permission; + canModifyFile = modify; + } + } + return ( <> )} diff --git a/frontend/src/components/dirent-grid-view/dirent-grid-view.js b/frontend/src/components/dirent-grid-view/dirent-grid-view.js index f220c28819..8ef32109f4 100644 --- a/frontend/src/components/dirent-grid-view/dirent-grid-view.js +++ b/frontend/src/components/dirent-grid-view/dirent-grid-view.js @@ -843,14 +843,25 @@ class DirentGridView extends React.Component { }; render() { - let { direntList, selectedDirentList, path } = this.props; + const { direntList, selectedDirentList, path, currentRepoInfo, userPerm } = this.props; + const { encrypted: repoEncrypted } = currentRepoInfo; let dirent = this.state.activeDirent ? this.state.activeDirent : ''; let direntPath = Utils.joinPath(path, dirent.name); + let canModifyFile = false; + if (['rw', 'cloud-edit'].indexOf(userPerm) != -1) { + canModifyFile = true; + } else { + const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm); + if (isCustomPermission) { + const { modify } = customPermission.permission; + canModifyFile = modify; + } + } + if (this.props.isDirentListLoading) { return (); } - const repoEncrypted = this.props.currentRepoInfo.encrypted; return ( @@ -1025,7 +1036,7 @@ class DirentGridView extends React.Component { moveToNextImage={this.moveToNextImage} onDeleteImage={this.deleteImage} onRotateImage={this.rotateImage} - enableRotate={!repoEncrypted} + enableRotate={canModifyFile} /> )} diff --git a/frontend/src/components/dirent-list-view/dirent-list-view.js b/frontend/src/components/dirent-list-view/dirent-list-view.js index f4238c6b15..06066dea94 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-view.js +++ b/frontend/src/components/dirent-list-view/dirent-list-view.js @@ -749,10 +749,20 @@ class DirentListView extends React.Component { }; render() { - const { direntList } = this.props; - + const { direntList, currentRepoInfo, userPerm } = this.props; + const { encrypted: repoEncrypted } = currentRepoInfo; const isDesktop = Utils.isDesktop(); - const repoEncrypted = this.props.currentRepoInfo.encrypted; + + let canModifyFile = false; + if (['rw', 'cloud-edit'].indexOf(userPerm) != -1) { + canModifyFile = true; + } else { + const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm); + if (isCustomPermission) { + const { modify } = customPermission.permission; + canModifyFile = modify; + } + } return (
)} diff --git a/frontend/src/components/dirent-list-view/dirent-none-view.js b/frontend/src/components/dirent-list-view/dirent-none-view.js index 28c20e6f0e..75658ca759 100644 --- a/frontend/src/components/dirent-list-view/dirent-none-view.js +++ b/frontend/src/components/dirent-list-view/dirent-none-view.js @@ -162,31 +162,36 @@ class DirentNoneView extends React.Component { if (this.props.isDirentListLoading) { return (); } - const { currentRepoInfo } = this.props; + const { currentRepoInfo, userPerm } = this.props; + let canCreateFile = false; + if (['rw', 'cloud-edit'].indexOf(userPerm) != -1) { + canCreateFile = true; + } else { + const { isCustomPermission, customPermission } = Utils.getUserPermission(userPerm); + if (isCustomPermission) { + const { create } = customPermission.permission; + canCreateFile = create; + } + } return (

{gettext('This folder has no content at this time.')}

-

{gettext('You can create files quickly')}{' +'}

- - -
- - -
- {enableSeadoc && !currentRepoInfo.encrypted && - } + {canCreateFile && ( + <> +

{gettext('You can create files quickly')}{' +'}

+ + +
+ + +
+ {enableSeadoc && !currentRepoInfo.encrypted && + + } + + )}
{this.state.isCreateFileDialogShow && (