From 119666a0ac0f9a9ad0f2c3db127647e2c19db277 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Tue, 14 May 2024 16:14:23 -0300 Subject: [PATCH] Add canToggleEncryption validation to RoomView/RightButtons --- app/views/RoomView/RightButtons.tsx | 44 ++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/app/views/RoomView/RightButtons.tsx b/app/views/RoomView/RightButtons.tsx index 75cd575e6..3f10ecce4 100644 --- a/app/views/RoomView/RightButtons.tsx +++ b/app/views/RoomView/RightButtons.tsx @@ -12,7 +12,7 @@ import { ILivechatDepartment } from '../../definitions/ILivechatDepartment'; import { ILivechatTag } from '../../definitions/ILivechatTag'; import i18n from '../../i18n'; import database from '../../lib/database'; -import { showConfirmationAlert, showErrorAlert } from '../../lib/methods/helpers'; +import { hasPermission, showConfirmationAlert, showErrorAlert } from '../../lib/methods/helpers'; import { closeLivechat as closeLivechatService } from '../../lib/methods/helpers/closeLivechat'; import { events, logEvent } from '../../lib/methods/helpers/log'; import { Services } from '../../lib/services'; @@ -50,6 +50,7 @@ interface IRightButtonsProps extends Pick { issuesWithNotifications: boolean; notificationsDisabled?: boolean; hasE2EEWarning: boolean; + toggleRoomE2EEncryptionPermission?: string[]; } interface IRigthButtonsState { @@ -57,6 +58,7 @@ interface IRigthButtonsState { tunread: string[]; tunreadUser: string[]; tunreadGroup: string[]; + canToggleEncryption: boolean; } class RightButtonsContainer extends Component { @@ -70,7 +72,8 @@ class RightButtonsContainer extends Component): void { + const { toggleRoomE2EEncryptionPermission } = this.props; + if (prevProps.toggleRoomE2EEncryptionPermission !== toggleRoomE2EEncryptionPermission) { + this.setCanToggleEncryption(); + } + } + componentWillUnmount() { if (this.threadSubscription && this.threadSubscription.unsubscribe) { this.threadSubscription.unsubscribe(); @@ -317,6 +335,15 @@ class RightButtonsContainer extends Component { + const { rid } = this.props; + const { toggleRoomE2EEncryptionPermission } = this.props; + const permissions = await hasPermission([toggleRoomE2EEncryptionPermission], rid); + + const canToggleEncryption = permissions[0]; + this.setState({ canToggleEncryption }); + }; + navigateToNotificationOrPushTroubleshoot = () => { const { room } = this; const { rid, navigation, isMasterDetail, issuesWithNotifications } = this.props; @@ -374,7 +401,7 @@ class RightButtonsContainer extends Component - {hasE2EEWarning ? toggleRoomE2EE(rid)} /> : null} + {hasE2EEWarning ? ( + toggleRoomE2EE(rid)} disabled={!canToggleEncryption} /> + ) : null} {issuesWithNotifications || notificationsDisabled ? ( ({ threadsEnabled: state.settings.Threads_enabled as boolean, isMasterDetail: state.app.isMasterDetail, livechatRequestComment: state.settings.Livechat_request_comment_when_closing_conversation as boolean, - issuesWithNotifications: state.troubleshootingNotification.issuesWithNotifications + issuesWithNotifications: state.troubleshootingNotification.issuesWithNotifications, + toggleRoomE2EEncryptionPermission: state.permissions['toggle-room-e2e-encryption'] }); export default connect(mapStateToProps)(withTheme(RightButtonsContainer));