update: canned responses permission on
This commit is contained in:
parent
730162fec9
commit
416be2b755
|
@ -314,7 +314,8 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
|||
tshow,
|
||||
mentionLoading,
|
||||
trackingType,
|
||||
permissionToUpload
|
||||
permissionToUpload,
|
||||
canViewCannedResponse
|
||||
} = this.state;
|
||||
|
||||
const { roomType, replying, editing, isFocused, message, theme, usedCannedResponse, uploadFilePermission } = this.props;
|
||||
|
@ -373,8 +374,11 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
|||
}
|
||||
|
||||
componentDidUpdate(prevProps: IMessageBoxProps) {
|
||||
const { uploadFilePermission } = this.props;
|
||||
if (!dequal(prevProps.uploadFilePermission, uploadFilePermission)) {
|
||||
const { uploadFilePermission, viewCannedResponsesPermission } = this.props;
|
||||
if (
|
||||
!dequal(prevProps.uploadFilePermission, uploadFilePermission) ||
|
||||
prevProps.viewCannedResponsesPermission !== viewCannedResponsesPermission
|
||||
) {
|
||||
this.setOptions();
|
||||
}
|
||||
}
|
||||
|
@ -412,12 +416,12 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
|||
|
||||
canViewCannedResponse = async () => {
|
||||
const { viewCannedResponsesPermission, rid } = this.props;
|
||||
const permissions = await RocketChat.hasPermission([viewCannedResponsesPermission], rid);
|
||||
const permissions = await hasPermission([viewCannedResponsesPermission], rid);
|
||||
return permissions[0];
|
||||
};
|
||||
|
||||
setOptions = async () => {
|
||||
const { uploadFilePermission, rid } = this.props;
|
||||
const { uploadFilePermission, viewCannedResponsesPermission, rid } = this.props;
|
||||
|
||||
// Servers older than 4.2
|
||||
if (!uploadFilePermission) {
|
||||
|
@ -425,8 +429,8 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
|||
return;
|
||||
}
|
||||
|
||||
const permissionToUpload = await hasPermission([uploadFilePermission], rid);
|
||||
this.setState({ permissionToUpload: permissionToUpload[0] });
|
||||
const permissions = await hasPermission([uploadFilePermission, viewCannedResponsesPermission], rid);
|
||||
this.setState({ permissionToUpload: permissions[0], canViewCannedResponse: permissions[1] });
|
||||
};
|
||||
|
||||
onChangeText: any = (text: string): void => {
|
||||
|
@ -795,11 +799,11 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
|||
|
||||
showMessageBoxActions = () => {
|
||||
logEvent(events.ROOM_SHOW_BOX_ACTIONS);
|
||||
const { permissionToUpload, canViewCannedResponse } = this.state;
|
||||
const { showActionSheet, goToCannedResponses } = this.props;
|
||||
const { permissionToUpload } = this.state;
|
||||
const { showActionSheet, goToCannedResponses, roomType } = this.props;
|
||||
|
||||
const options = [];
|
||||
if (canViewCannedResponse) {
|
||||
if (roomType === 'l' && goToCannedResponses) {
|
||||
options.push({
|
||||
title: I18n.t('Canned_Responses'),
|
||||
icon: 'canned-response',
|
||||
|
|
|
@ -69,7 +69,6 @@ interface IRoomActionsViewProps extends IBaseScreen<ChatsStackParamList, 'RoomAc
|
|||
addTeamChannelPermission?: string[];
|
||||
convertTeamPermission?: string[];
|
||||
viewCannedResponsesPermission?: string[];
|
||||
livechatAllowManualOnHold?: boolean;
|
||||
}
|
||||
|
||||
interface IRoomActionsViewState {
|
||||
|
@ -347,13 +346,6 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
|
|||
return result;
|
||||
};
|
||||
|
||||
canPlaceLivechatOnHold = (): boolean => {
|
||||
const { livechatAllowManualOnHold } = this.props;
|
||||
const { room } = this.state;
|
||||
|
||||
return !!(livechatAllowManualOnHold && !room?.lastMessage?.token && room?.lastMessage?.u && !room.onHold);
|
||||
};
|
||||
|
||||
renderEncryptedSwitch = () => {
|
||||
const { room, canToggleEncryption, canEdit } = this.state;
|
||||
const { encrypted } = room;
|
||||
|
@ -1034,7 +1026,7 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
|
|||
event: this.placeOnHoldLivechat
|
||||
})
|
||||
}
|
||||
left={() => <List.Icon name='pause' />}
|
||||
left={() => <List.Icon name='pause' color={themes[theme].titleText} />}
|
||||
showActionIndicator
|
||||
/>
|
||||
<List.Separator />
|
||||
|
|
|
@ -344,7 +344,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
|
||||
shouldComponentUpdate(nextProps: IRoomViewProps, nextState: IRoomViewState) {
|
||||
const { state } = this;
|
||||
const { roomUpdate, member } = state;
|
||||
const { roomUpdate, member, isOnHold } = state;
|
||||
const { appState, theme, insets, route } = this.props;
|
||||
if (theme !== nextProps.theme) {
|
||||
return true;
|
||||
|
@ -355,7 +355,9 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
if (member.statusText !== nextState.member.statusText) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isOnHold !== nextState.isOnHold) {
|
||||
return true;
|
||||
}
|
||||
const stateUpdated = stateAttrsUpdate.some(key => nextState[key] !== state[key]);
|
||||
if (stateUpdated) {
|
||||
return true;
|
||||
|
@ -370,8 +372,8 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
}
|
||||
|
||||
componentDidUpdate(prevProps: IRoomViewProps, prevState: IRoomViewState) {
|
||||
const { roomUpdate, joined, isOnHold } = this.state;
|
||||
const { appState, insets, route, livechatAllowManualOnHold } = this.props;
|
||||
const { roomUpdate, joined, room } = this.state;
|
||||
const { appState, insets, route } = this.props;
|
||||
|
||||
if (route?.params?.jumpToMessageId && route?.params?.jumpToMessageId !== prevProps.route?.params?.jumpToMessageId) {
|
||||
this.jumpToMessage(route?.params?.jumpToMessageId);
|
||||
|
@ -396,16 +398,14 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
// If it's a livechat room
|
||||
if (this.t === 'l') {
|
||||
if (
|
||||
!room.lastMessage?.token ||
|
||||
!dequal(prevState.roomUpdate.visitor, roomUpdate.visitor) ||
|
||||
!dequal(prevState.roomUpdate.status, roomUpdate.status) ||
|
||||
prevState.joined !== joined
|
||||
) {
|
||||
this.setHeader();
|
||||
}
|
||||
|
||||
if (isOnHold !== prevState.isOnHold || prevProps.livechatAllowManualOnHold !== livechatAllowManualOnHold) {
|
||||
const canPlaceLivechatOnHold = this.canPlaceLivechatOnHold();
|
||||
this.setState({ canPlaceLivechatOnHold });
|
||||
this.setHeader();
|
||||
}
|
||||
}
|
||||
if (roomUpdate.teamMain !== prevState.roomUpdate.teamMain || roomUpdate.teamId !== prevState.roomUpdate.teamId) {
|
||||
|
@ -489,7 +489,6 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
canPlaceLivechatOnHold = () => {
|
||||
const { livechatAllowManualOnHold } = this.props;
|
||||
const { room } = this.state;
|
||||
|
||||
return !!(livechatAllowManualOnHold && !room?.lastMessage?.token && room?.lastMessage?.u && !room.onHold);
|
||||
};
|
||||
|
||||
|
@ -1278,7 +1277,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
dateSeparator = item.ts;
|
||||
}
|
||||
}
|
||||
|
||||
console.log({ item });
|
||||
let content = null;
|
||||
if (item.t && MESSAGE_TYPE_ANY_LOAD.includes(item.t as MessageTypeLoad)) {
|
||||
content = (
|
||||
|
@ -1346,7 +1345,8 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
};
|
||||
|
||||
renderFooter = () => {
|
||||
const { joined, room, selectedMessage, editing, replying, replyWithMention, readOnly, loading } = this.state;
|
||||
const { joined, room, selectedMessage, editing, replying, replyWithMention, readOnly, loading, canViewCannedResponse } =
|
||||
this.state;
|
||||
const { navigation, theme, route } = this.props;
|
||||
|
||||
const usedCannedResponse = route?.params?.usedCannedResponse;
|
||||
|
@ -1413,7 +1413,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
return (
|
||||
<MessageBox
|
||||
ref={this.messagebox}
|
||||
goToCannedResponses={this.goToCannedResponses}
|
||||
goToCannedResponses={canViewCannedResponse ? this.goToCannedResponses : null}
|
||||
onSubmit={this.handleSendMessage}
|
||||
rid={this.rid}
|
||||
tmid={this.tmid}
|
||||
|
|
Loading…
Reference in New Issue