[deploy] 🚀 Bug: Fix iframe flashes on re render (#8974)

* Feature 🚀 : Ability to delete messages in chat channels

- Sending message ID to frontend
- Deleting Message
- Use pusher to delete message realtime

* Minor Bug 🐞: Show message action only for current user

- User can delete or edit their own messages

* Test cases added

* Bug 🐞: Update message id for receiver

Message id was not sent to receiver by pusher

* Refactoring🛠: Message controller refactoring

* Test Cases📝 : Specs for Delete message added

* Feature 🚀 : Ability to edit messages

* Test Cases📝 : Specs for Edit message added

* fix flashes on re-render chat ui

Co-authored-by: Sarthak Sharma <7lovesharma7@gmail.com>
This commit is contained in:
narender2031 2020-06-29 21:50:21 +05:30 committed by GitHub
parent c627086d74
commit 09e70896fa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 48 deletions

View file

@ -1440,7 +1440,6 @@ export default class Chat extends Component {
onTriggerContent={this.triggerActiveContent}
resource={state.activeContent[state.activeChannelId]}
activeChannel={state.activeChannel}
githubToken={props.githubToken}
fullscreen={state.fullscreenContent === 'sidecar'}
/>
<VideoContent

View file

@ -5,6 +5,19 @@ import ChannelRequest from './channelRequest';
import RequestManager from './requestManager';
import ChatChannelSettings from './ChatChannelSettings/ChatChannelSettings';
const smartSvgIcon = (content, d) => (
<svg
data-content={content}
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
width="24"
height="24"
>
<path data-content={content} fill="none" d="M0 0h24v24H0z" />
<path data-content={content} d={d} />
</svg>
);
export default class Content extends Component {
static propTypes = {
resource: PropTypes.shape({
@ -24,53 +37,6 @@ export default class Content extends Component {
if (!resource) {
return '';
}
const smartSvgIcon = (content, d) => (
<svg
data-content={content}
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
width="24"
height="24"
>
<path data-content={content} fill="none" d="M0 0h24v24H0z" />
<path data-content={content} d={d} />
</svg>
);
const Display = () => {
switch (resource.type_of) {
case 'loading-user':
return <div className="loading-user" title="Loading user" />;
case 'article':
return <Article resource={resource} />;
case 'channel-request':
return (
<ChannelRequest
resource={resource.data}
handleJoiningRequest={resource.handleJoiningRequest}
/>
);
case 'channel-request-manager':
return (
<RequestManager
resource={resource.data}
handleRequestRejection={resource.handleRequestRejection}
handleRequestApproval={resource.handleRequestApproval}
/>
);
case 'chat-channel-setting':
return (
<ChatChannelSettings
resource={resource.data}
activeMembershipId={resource.activeMembershipId}
/>
);
default:
return null;
}
};
return (
// TODO: A button (role="button") cannot contain other interactive elements, i.e. buttons.
// TODO: These should have key click events as well.
@ -116,3 +82,36 @@ export default class Content extends Component {
);
}
}
const Display = ({ resource }) => {
switch (resource.type_of) {
case 'loading-user':
return <div className="loading-user" title="Loading user" />;
case 'article':
return <Article resource={resource} />;
case 'channel-request':
return (
<ChannelRequest
resource={resource.data}
handleJoiningRequest={resource.handleJoiningRequest}
/>
);
case 'channel-request-manager':
return (
<RequestManager
resource={resource.data}
handleRequestRejection={resource.handleRequestRejection}
handleRequestApproval={resource.handleRequestApproval}
/>
);
case 'chat-channel-setting':
return (
<ChatChannelSettings
resource={resource.data}
activeMembershipId={resource.activeMembershipId}
/>
);
default:
return null;
}
};