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