Skip to content
This repository has been archived by the owner on Mar 13, 2024. It is now read-only.

[28725] Add call button #5715

Merged
merged 28 commits into from
Sep 8, 2020
Merged

[28725] Add call button #5715

merged 28 commits into from
Sep 8, 2020

Conversation

larkox
Copy link
Contributor

@larkox larkox commented Jun 12, 2020

Summary

At the moment we have several plugins for videoconferencing. It would be great if they were all bundled in a single dropdown separated from other plugins, for instances were they have more than one videoconferencing option configured.

There are two options for the location: channel header or post action

In the channel header, the current version shows the plugin icon (as it was being shown before) if there is only one videoconferencing plugin installed. If there is more than one, a dropdown (as the one for other plugins) will show.

In the post action, the current version shows the plugin icon if there is only one videoconferencing plugin installed. If there is more than one, a dropdown will show.

I also created a new registry for these plugins, different from registerChannelHeaderButton. Depending on the final option we take, I will update the name.

I am missing a proper icon to show at the call button. Probably a phone icon or a camera icon. Position is also up to discussion.

Ticket Link

https://mattermost.atlassian.net/browse/MM-28725

Related Pull Requests

None

Screenshots

Inspiration:
Screenshot from 2020-06-12 15-48-11

Current implementation (Option A):
Screenshot from 2020-06-12 15-50-05

Current implementation (Option B):

  • WebApp desktop view
    Screenshot from 2020-07-07 14-41-01
    Screenshot from 2020-07-07 14-59-26
    Screenshot from 2020-07-07 14-59-16
  • WebApp Mobile view
    Screenshot from 2020-07-07 14-41-18
    Screenshot from 2020-07-07 14-58-45
    Screenshot from 2020-07-07 14-58-51

@larkox larkox added 1: PM Review Requires review by a product manager 2: Dev Review Requires review by a core commiter 3: QA Review Requires review by a QA tester 1: UX Review Requires review by a UX Designer labels Jun 12, 2020
@jespino
Copy link
Member

jespino commented Jun 12, 2020

How common is to have multiple videoconference on from our clients perspective? maybe @aaronrothschild have more knowledge about that.

@aaronrothschild
Copy link
Contributor

Awesome stuff @larkox Multiple meeting providers sometimes happen, and this would help in that scenario.

But, the better UX prblem this solves is providing a consistent way to train all users "this is how you can easily start a video meeting" Click the "Call button in whatever channel you are in". Even if there is 5 plugins installed, the call button should always be visible as a button individually. If there are multiple call providers (Zoom and Webex say) - then users can choose from there - rather than a cluttered list of plugins.

Many people "expect" MM to have a "calling feature" built in...this is a way to make it more obvious to the end user where they can start a call from.

@esethna and @michaelgamble @andrewbrown00 Thoughts on this sort of functionality for plugins?

Copy link
Contributor

@aaronrothschild aaronrothschild left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to see a proper "icon" for a phone or video call.

@esethna
Copy link
Contributor

esethna commented Jun 15, 2020

Even if there is 5 plugins installed, the call button should always be visible as a button individually. If there are multiple call providers (Zoom and Webex say) - then users can choose from there - rather than a cluttered list of plugins.

Like the idea, and totally agree with Aaron on this ^. Call button should always be visible. This could be useful if there are multiple call options and they open in a pop-up when the video icon is clicked

@hmhealey
Copy link
Member

While I don't think supporting multiple videoconferencing plugins is something we necessarily need to do, I'm sure there's people that are going to have multiple of them enabled because one dude on their server will prefer Skype over Zoom or something. People are stubborn like that. 😛

I do like the idea of having some way to promote some plugins to being more accessible like the video conferencing though, particularly because it does make it easier to say "click the Make A Call button" than to say "click the Zoom button which can either be on the bar or in this menu".

I'm brainstorming a bit much right now, but I could see this being extended past just videoconferencing vs other plugins where you might want to have different groups of plugins or different priorities for what should and shouldn't be grouped, but that's entirely out of scope for this.

@hmhealey
Copy link
Member

Also, to avoid rambling more, how does this look in mobile web view?

@larkox
Copy link
Contributor Author

larkox commented Jun 18, 2020

@hmhealey Regarding mobile view, it does not change at the moment. It will still be seen in the same place as other plugins. We can add also some button for this, but since, if I am not mistaken, mobile web view may suffer some changes, I preferred to solve this only on normal view.

@larkox larkox requested a review from hmhealey June 18, 2020 18:17
Copy link
Member

@hmhealey hmhealey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for making those changes!

function mapStateToProps(state, ownProps) {
let components = state.plugins.components.ChannelHeaderButton;
if (ownProps && ownProps.callPlugins) {
components = state.plugins.components.ChannelHeaderCallButton;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not something to do now, but if the call button version of this ever starts to require more complicated to get its props, we could also consider splitting this up so that the call button has its own mapStateToProps, but it still shares the same underlying ChannelHeaderPlug component. Using a prop to switch between the two components is good enough for now though.

@larkox larkox added this to Submitted in Integrations Team via automation Jun 23, 2020
@andrewbrown00
Copy link

andrewbrown00 commented Jun 26, 2020

Thanks @larkox for kicking this off 🎉

@aaronrothschild and @esethna I 5/5 agree that the 'call button' should always be visible.

I also agree with Aaron's comment:

providing a consistent way to train all users "this is how you can easily start a video meeting"

I do want to challenge where we put the call icon, I'm 0/5 if it should live in the channel header vs being near the post control. Most chat products have created the mental model for users that they either want to send/replay to a message or hop on a call/video with someone. If we apply that mental model and the proximity principle, I feel like it we could help users having the call button close to the Post Input at the bottom of the channel.

I definitely want to validate this hypothesis with users and this would quick to mock up the options.

@larkox
Copy link
Contributor Author

larkox commented Jun 29, 2020

@andrewbrown00 I think it would be great to have the call button next to the input text. I am not sure if there is any concern on space, but I can try moving the call button next to the input, next to the attach and emoji buttons. It would have a similar behavior as the attach button:
Screenshot from 2020-06-29 09-56-54
Screenshot from 2020-06-29 09-57-00

Do you want me to code it down, or do you prefer to discuss this first?

</span>
</React.Fragment>
<div>
<React.Fragment>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need the React.Fragment that is used to represent nodes that have no specific parent, in this case, you have a <div> that acts like the parent of all the children, so, you don't need it.

Copy link
Member

@jespino jespino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two small comments, otherwise looks good to me.

@jgilliam17
Copy link
Contributor

Hello @larkox - I need some guidance, not seeing the call button. I added Jitsi and Webex on the PR server and can see 2 separate icons in the header, nothing in the textbox.
Screen Shot 2020-08-26 at 4 15 21 PM

@larkox
Copy link
Contributor Author

larkox commented Aug 27, 2020

@jgilliam17 The plugin has to be prepared to use this, so a special build of the plugin has to be added. I will add it to this test server.

@larkox
Copy link
Contributor Author

larkox commented Aug 27, 2020

@jgilliam17 I added two different modified "zoom plugins" so you can disable one and see that the other one still shows as expected. Do not hesitate to contact me if you find any other trouble 😄

Copy link
Contributor

@jgilliam17 jgilliam17 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @larkox for setting up zoom for testing
Tested, looks good to merge.

  • Verified new call button on main channel view textbox.

@jgilliam17 jgilliam17 added 4: Reviews Complete All reviewers have approved the pull request and removed 3: QA Review Requires review by a QA tester Setup Cloud Test Server Setup a test server using Mattermost Cloud labels Aug 27, 2020
@larkox
Copy link
Contributor Author

larkox commented Aug 28, 2020

@hmhealey @jgilliam17 Heads up that I have made a small change in the CSS to fix some problems I was having when the plugin put some SVG instead of the base icon. I leave up to you whether it needs a new review or not.

@hmhealey
Copy link
Member

It still looks good from the dev side at least

@jgilliam17 jgilliam17 added the Setup Cloud Test Server Setup a test server using Mattermost Cloud label Aug 31, 2020
@jgilliam17
Copy link
Contributor

Re-tested, call button as expected. Thanks @larkox

@larkox larkox removed the Setup Cloud Test Server Setup a test server using Mattermost Cloud label Sep 8, 2020
@mm-cloud-bot
Copy link

Test server destroyed

@mm-cloud-bot
Copy link

Test server creation failed. See the logs for more information.

@larkox larkox merged commit adb578d into mattermost:master Sep 8, 2020
Integrations Team automation moved this from Submitted to Done Sep 8, 2020
@hanzei hanzei added this to the v5.28 milestone Sep 9, 2020
@amyblais
Copy link
Member

@larkox @jgilliam17 Does this need a Jira ticket and if yes, can you create one?

@jgilliam17
Copy link
Contributor

@larkox @jgilliam17 Does this need a Jira ticket and if yes, can you create one?

I can create one and link here.

@jgilliam17
Copy link
Contributor

https://mattermost.atlassian.net/browse/MM-28725

@jgilliam17 jgilliam17 changed the title Add call button [28725]Add call button Sep 15, 2020
@amyblais amyblais added Changelog/Not Needed Does not require a changelog entry Docs/Not Needed Does not require documentation and removed Changelog/Not Needed Does not require a changelog entry labels Sep 15, 2020
@hanzei hanzei changed the title [28725]Add call button [28725] Add call button Sep 29, 2020
@amyblais amyblais added the Changelog/Not Needed Does not require a changelog entry label Sep 30, 2020
jfrerich pushed a commit that referenced this pull request Oct 23, 2020
* Add Call dropdown for plugins

* Update i18n

* Remove plugings channel header call and reuse channel header plug

* Fix tooltip and i18n error

* Add minimum required version and remove unneeded react fragment

* Add call button to post

* Extract i18n

* Change icon by camera icon

* Remove header button for calls

* Fix tests and remove changes from the header button

* Fix lint

* Update i18n

* Remove unneeded divs, change CameraIcon to functional component, simplify aria label, prevent default on # link and fix typo

* Remove channel header references, fix lint and remove unused style

* Fix bug

* Change callbutton to functional component

* Fix CSS
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
4: Reviews Complete All reviewers have approved the pull request Changelog/Not Needed Does not require a changelog entry Docs/Not Needed Does not require documentation
Projects
No open projects