From 048cf874f5b9a6427f3397fd5d07f02f39bce2a7 Mon Sep 17 00:00:00 2001 From: Sarthak Sharma <7lovesharma7@gmail.com> Date: Tue, 18 Aug 2020 18:59:40 +0530 Subject: [PATCH] =?UTF-8?q?[deploy]=20=F0=9F=90=9EBug=20Fix:=20Room=20that?= =?UTF-8?q?=20has=20been=20left=20still=20shows=20up=20in=20URL=20[Fixes:?= =?UTF-8?q?=20#9501]=20(#9804)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🐞Bug Fix: Channel_leave_and_join_redirection * Update chat.jsx --- .../chat_channel_memberships_helper.rb | 3 +- .../ChatChannelSettings.jsx | 3 +- .../PersonalInvitationListItem.jsx | 4 +-- app/javascript/chat/chat.jsx | 28 +++++++++++++------ app/javascript/chat/content.jsx | 1 + 5 files changed, 27 insertions(+), 12 deletions(-) diff --git a/app/helpers/chat_channel_memberships_helper.rb b/app/helpers/chat_channel_memberships_helper.rb index 5b1d43238..710511bf0 100644 --- a/app/helpers/chat_channel_memberships_helper.rb +++ b/app/helpers/chat_channel_memberships_helper.rb @@ -10,7 +10,8 @@ module ChatChannelMembershipsHelper status: membership.status, image: ProfileImage.new(membership.user).get(width: 90), chat_channel_name: membership.chat_channel.channel_name, - chat_channel_id: membership.chat_channel.id + chat_channel_id: membership.chat_channel.id, + slug: membership.chat_channel.slug } end end diff --git a/app/javascript/chat/ChatChannelSettings/ChatChannelSettings.jsx b/app/javascript/chat/ChatChannelSettings/ChatChannelSettings.jsx index 2f1dbad1b..23dd34be5 100644 --- a/app/javascript/chat/ChatChannelSettings/ChatChannelSettings.jsx +++ b/app/javascript/chat/ChatChannelSettings/ChatChannelSettings.jsx @@ -18,6 +18,7 @@ import ChatChannelSettingsSection from './ChatChannelSettingsSection'; export default class ChatChannelSettings extends Component { static propTypes = { + handleLeavingChannel: PropTypes.func.isRequired, activeMembershipId: PropTypes.number.isRequired, }; @@ -308,7 +309,7 @@ export default class ChatChannelSettings extends Component { if (actionStatus) { const response = await leaveChatChannelMembership(currentMembership.id); if (response.success) { - this.updateChannelDetails(); + this.props.handleLeavingChannel(currentMembership.id); } else { this.setState({ successMessages: null, diff --git a/app/javascript/chat/RequestManager/PersonalInvitationListItem.jsx b/app/javascript/chat/RequestManager/PersonalInvitationListItem.jsx index 17a5c1a1c..4a026e6cc 100644 --- a/app/javascript/chat/RequestManager/PersonalInvitationListItem.jsx +++ b/app/javascript/chat/RequestManager/PersonalInvitationListItem.jsx @@ -17,7 +17,7 @@ const RequestListItem = ({ request, updateMembership }) => ( onClick={updateMembership} data-channel-id={request.chat_channel_id} data-membership-id={request.membership_id} - data-channel-slug={request.channel_modified_slug} + data-channel-slug={request.slug} data-user-action="reject" > {' '} @@ -29,7 +29,7 @@ const RequestListItem = ({ request, updateMembership }) => ( onClick={updateMembership} data-channel-id={request.chat_channel_id} data-membership-id={request.membership_id} - data-channel-slug={request.channel_modified_slug} + data-channel-slug={request.slug} data-user-action="accept" > {' '} diff --git a/app/javascript/chat/chat.jsx b/app/javascript/chat/chat.jsx index fad0c5107..dc8185af3 100644 --- a/app/javascript/chat/chat.jsx +++ b/app/javascript/chat/chat.jsx @@ -339,12 +339,7 @@ export default class Chat extends Component { }; setupChannel = (channelId) => { - const { - messages, - messageOffset, - activeChannel, - activeChannelId, - } = this.state; + const { messages, messageOffset, activeChannel } = this.state; if ( !messages[channelId] || messages[channelId].length === 0 || @@ -354,7 +349,7 @@ export default class Chat extends Component { } if (activeChannel && activeChannel.channel_type !== 'direct') { getContent( - `/chat_channels/${activeChannelId}/channel_info`, + `/chat_channels/${channelId}/channel_info`, this.setOpenChannelUsers, null, ); @@ -372,7 +367,7 @@ export default class Chat extends Component { res.channel_users, ([username]) => username !== window.currentUser.username, ); - if (activeChannel.channel_type === 'open') { + if (activeChannel && activeChannel.channel_type === 'open') { this.setState({ channelUsers: { [activeChannelId]: leftUser, @@ -919,6 +914,7 @@ export default class Chat extends Component { this.triggerSwitchChannel( parseInt(acceptedInfo.channelId, 10), acceptedInfo.channelSlug, + this.state.chatChannels, ); } @@ -1022,6 +1018,7 @@ export default class Chat extends Component { data: {}, type_of: 'chat-channel-setting', activeMembershipId: activeChannel.id, + handleLeavingChannel: this.handleLeavingChannel, }); } } @@ -1062,6 +1059,21 @@ export default class Chat extends Component { }); }; + handleLeavingChannel = (leftChannelId) => { + const { chatChannels } = this.state; + this.triggerSwitchChannel( + chatChannels[1].chat_channel_id, + chatChannels[1].channel_modified_slug, + chatChannels, + ); + this.setState((prevState) => ({ + chatChannels: prevState.chatChannels.filter( + (channel) => channel.id !== leftChannelId, + ), + })); + this.setActiveContentState(chatChannels[1].chat_channel_id, null); + }; + triggerChannelTypeFilter = (e) => { const { filterQuery } = this.state; const type = e.target.dataset.channelType; diff --git a/app/javascript/chat/content.jsx b/app/javascript/chat/content.jsx index e9fcb0d8d..6689f6a11 100644 --- a/app/javascript/chat/content.jsx +++ b/app/javascript/chat/content.jsx @@ -109,6 +109,7 @@ const Display = ({ resource }) => { ); default: