chore: add omnichannel permissions to RightButtons

chore: missing changes to previous commit on RoomView
This commit is contained in:
Gerzon Z 2022-04-14 17:19:33 -04:00
parent a2965a3f93
commit 97d4dc9f3b
2 changed files with 35 additions and 16 deletions

View File

@ -82,16 +82,7 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS
} }
} }
if (t === 'l') { if (t === 'l') {
const canReturnQueue = await this.canReturnQueue(); this.setOmnichannelPermissions();
const canForwardGuest = await this.canForwardGuest();
this.setState({ canReturnQueue, canForwardGuest });
}
}
componentDidUpdate(prevProps: IRightButtonsProps) {
const { status } = this.props;
if (prevProps.status !== status) {
return false;
} }
} }
@ -122,6 +113,14 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS
return false; return false;
} }
componentDidUpdate(prevProps: IRightButtonsProps) {
const { status, joined } = this.props;
if (prevProps.status !== status || prevProps.joined !== joined) {
this.setOmnichannelPermissions();
}
}
componentWillUnmount() { componentWillUnmount() {
if (this.threadSubscription && this.threadSubscription.unsubscribe) { if (this.threadSubscription && this.threadSubscription.unsubscribe) {
this.threadSubscription.unsubscribe(); this.threadSubscription.unsubscribe();
@ -131,6 +130,12 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS
} }
} }
setOmnichannelPermissions = async () => {
const canReturnQueue = await this.canReturnQueue();
const canForwardGuest = await this.canForwardGuest();
this.setState({ canReturnQueue, canForwardGuest });
};
observeThread = (threadRecord: TMessageModel) => { observeThread = (threadRecord: TMessageModel) => {
const threadObservable: Observable<TMessageModel> = threadRecord.observe(); const threadObservable: Observable<TMessageModel> = threadRecord.observe();
this.threadSubscription = threadObservable.subscribe(thread => this.updateThread(thread)); this.threadSubscription = threadObservable.subscribe(thread => this.updateThread(thread));
@ -278,13 +283,17 @@ class RightButtonsContainer extends Component<IRightButtonsProps, IRigthButtonsS
} }
}; };
isOmnichannelPreview = () => {
const { joined, status } = this.props;
return joined && status !== 'queued';
};
render() { render() {
const { isFollowingThread, tunread, tunreadUser, tunreadGroup } = this.state; const { isFollowingThread, tunread, tunreadUser, tunreadGroup } = this.state;
const { t, tmid, threadsEnabled, teamId, joined, status } = this.props; const { t, tmid, threadsEnabled, teamId, joined } = this.props;
const isOmnichannelPreview = joined && status !== 'queued';
if (t === 'l') { if (t === 'l') {
if (isOmnichannelPreview) { if (this.isOmnichannelPreview()) {
return ( return (
<HeaderButton.Container> <HeaderButton.Container>
<HeaderButton.Item iconName='kebab' onPress={this.showMoreActions} testID='room-view-header-omnichannel-kebab' /> <HeaderButton.Item iconName='kebab' onPress={this.showMoreActions} testID='room-view-header-omnichannel-kebab' />

View File

@ -315,7 +315,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
} }
componentDidUpdate(prevProps: IRoomViewProps, prevState: IRoomViewState) { componentDidUpdate(prevProps: IRoomViewProps, prevState: IRoomViewState) {
const { roomUpdate } = this.state; const { roomUpdate, joined } = this.state;
const { appState, insets, route } = 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) {
@ -341,7 +341,11 @@ 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 (!dequal(prevState.roomUpdate.visitor, roomUpdate.visitor)) { if (
!dequal(prevState.roomUpdate.visitor, roomUpdate.visitor) ||
!dequal(prevState.roomUpdate.status, roomUpdate.status) ||
prevState.joined !== joined
) {
this.setHeader(); this.setHeader();
} }
} }
@ -1146,6 +1150,11 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
}); });
}; };
goToCannedResponses = () => {
const { room } = this.state;
Navigation.navigate('CannedResponsesListView', { rid: room.rid, room });
};
renderItem = (item: TAnyMessageModel, previousItem: TAnyMessageModel, highlightedMessage?: string) => { renderItem = (item: TAnyMessageModel, previousItem: TAnyMessageModel, highlightedMessage?: string) => {
const { room, lastOpen, canAutoTranslate } = this.state; const { room, lastOpen, canAutoTranslate } = this.state;
const { user, Message_GroupingPeriod, Message_TimeFormat, useRealName, baseUrl, Message_Read_Receipt_Enabled, theme } = const { user, Message_GroupingPeriod, Message_TimeFormat, useRealName, baseUrl, Message_Read_Receipt_Enabled, theme } =
@ -1279,6 +1288,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
return ( return (
<MessageBox <MessageBox
ref={this.messagebox} ref={this.messagebox}
goToCannedResponses={this.goToCannedResponses}
onSubmit={this.sendMessage} onSubmit={this.sendMessage}
rid={this.rid} rid={this.rid}
tmid={this.tmid} tmid={this.tmid}
@ -1338,7 +1348,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
if ('id' in room) { if ('id' in room) {
({ sysMes, bannerClosed, announcement, tunread, ignored } = room); ({ sysMes, bannerClosed, announcement, tunread, ignored } = room);
} }
console.log({ room });
return ( return (
<SafeAreaView style={{ backgroundColor: themes[theme].backgroundColor }} testID='room-view'> <SafeAreaView style={{ backgroundColor: themes[theme].backgroundColor }} testID='room-view'>
<StatusBar /> <StatusBar />