diff options
Diffstat (limited to 'webapp/utils/post_utils.jsx')
-rw-r--r-- | webapp/utils/post_utils.jsx | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/webapp/utils/post_utils.jsx b/webapp/utils/post_utils.jsx index 88021c2a5..20993b95c 100644 --- a/webapp/utils/post_utils.jsx +++ b/webapp/utils/post_utils.jsx @@ -3,11 +3,19 @@ import Client from 'client/web_client.jsx'; import Constants from 'utils/constants.jsx'; +import * as Utils from 'utils/utils.jsx'; + +import TeamStore from 'stores/team_store.jsx'; +import UserStore from 'stores/user_store.jsx'; export function isSystemMessage(post) { return post.type && (post.type.lastIndexOf(Constants.SYSTEM_MESSAGE_PREFIX) === 0); } +export function isPostOwner(post) { + return UserStore.getCurrentId() === post.user_id; +} + export function isComment(post) { if ('root_id' in post) { return post.root_id !== '' && post.root_id != null; @@ -33,3 +41,36 @@ export function getProfilePicSrcForPost(post, timestamp) { return src; } + +export function canDeletePost(post) { + var isOwner = isPostOwner(post); + var isAdmin = TeamStore.isTeamAdminForCurrentTeam() || UserStore.isSystemAdminForCurrentUser(); + var isSystemAdmin = UserStore.isSystemAdminForCurrentUser(); + + if (global.window.mm_license.IsLicensed === 'true') { + return (global.window.mm_config.RestrictPostDelete === Constants.PERMISSIONS_DELETE_POST_ALL && (isOwner || isAdmin)) || + (global.window.mm_config.RestrictPostDelete === Constants.PERMISSIONS_DELETE_POST_TEAM_ADMIN && isAdmin) || + (global.window.mm_config.RestrictPostDelete === Constants.PERMISSIONS_DELETE_POST_SYSTEM_ADMIN && isSystemAdmin); + } + return isOwner || isAdmin; +} + +export function canEditPost(post, editDisableAction) { + var isOwner = isPostOwner(post); + + var canEdit = isOwner && !isSystemMessage(post); + + if (canEdit && global.window.mm_license.IsLicensed === 'true') { + if (global.window.mm_config.AllowEditPost === Constants.ALLOW_EDIT_POST_NEVER) { + canEdit = false; + } else if (global.window.mm_config.AllowEditPost === Constants.ALLOW_EDIT_POST_TIME_LIMIT) { + var timeLeft = (post.create_at + (global.window.mm_config.PostEditTimeLimit * 1000)) - Utils.getTimestamp(); + if (timeLeft > 0) { + editDisableAction.fireAfter(timeLeft + 1000); + } else { + canEdit = false; + } + } + } + return canEdit; +}
\ No newline at end of file |