Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Video Call Chat Links #1878

Merged
merged 41 commits into from
Apr 1, 2021
Merged

Add Video Call Chat Links #1878

merged 41 commits into from
Apr 1, 2021

Conversation

Luke9389
Copy link
Contributor

@Luke9389 Luke9389 commented Mar 18, 2021

Details

This change introduces a new menu for video chats. Currently, the implementation just brings up a new video chat (zoom or google meet) and then we expect the user to share the link in the chat.

Possible Improvement

It would be great to have the generated meeting link show up in the chat. This seems possible with Zoom because they have an API, but unfortunately Google Meet doesn't. I'm a bit hesitant to implement it for one but not the other, and since it was not part of the initial issue, I'm going to leave that out for now.

Fixed Issues

Fixes https://github.com/Expensify/Expensify/issues/156264

Tests / QA Steps

The test steps here are pretty straight-forward.

  1. Go to a chat with any other person (test account or not)
  2. Click the little phone icon at the top right
  3. Select either zoom or google meet (they'll both want you to sign in first, so the first time you click either of them, you'll need to sign into their platform)
  4. Verify that you're brought to a new video chat.

Tested On

  • Web
  • Mobile Web
  • Desktop
  • iOS
  • Android

Screenshots

Web

Screen Shot 2021-03-26 at 4 00 06 PM

Screen Shot 2021-03-26 at 4 02 06 PM

Mobile Web

Screen Shot 2021-03-26 at 4 02 48 PM

Desktop

Screen Shot 2021-03-26 at 4 03 57 PM

iOS

Screen Shot 2021-03-26 at 4 08 12 PM

Android

Screen Shot 2021-03-26 at 4 17 26 PM

@Luke9389 Luke9389 self-assigned this Mar 18, 2021
@Luke9389 Luke9389 requested a review from a team as a code owner March 18, 2021 23:06
@botify botify requested review from Gonals and removed request for a team March 18, 2021 23:07
src: PropTypes.oneOf(_.values(Expensicons)).isRequired,
src: PropTypes.oneOfType([
PropTypes.oneOf(_.values(Expensicons)),
PropTypes.func,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is because I was reluctant to add the Zoom and Meet logos to a file called Expensicons 😄. Willing to do so, but this was my preferred method.

Copy link
Contributor

Choose a reason for hiding this comment

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

I would say just do it! We could just as easily have called it IconLibrary or something, but Expensicons is just a fun name. No need to let that affect the implementation imo.

Copy link
Contributor

Choose a reason for hiding this comment

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

Good call just importing the full-color svg directly where you used it. 👍🏼
But I think that means that this change is unnecessary.

Copy link
Contributor

Choose a reason for hiding this comment

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

Oh, I see why you need this. My mistake 👍

Copy link
Contributor

Choose a reason for hiding this comment

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

Sorry I'm not seeing it where is this a func ?

Copy link
Contributor

Choose a reason for hiding this comment

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

Are the svg imported as functions? 🤔

Copy link
Contributor

Choose a reason for hiding this comment

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

They are imported as functional components

Copy link
Contributor

Choose a reason for hiding this comment

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

Huh weird OK

Copy link
Contributor

Choose a reason for hiding this comment

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

So then... validating that it is

PropTypes.oneOf(_.values(Expensicons))

serves no purpose at all ?

Copy link
Contributor

Choose a reason for hiding this comment

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

Ah yeah good point. I think that is redundant now since any function will also pass this type check

Copy link
Contributor

@roryabraham roryabraham left a comment

Choose a reason for hiding this comment

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

I know this is WIP, just some early feedback.

assets/images/Zoom - Blue.svg Outdated Show resolved Hide resolved
src/components/VideoChatMenu.js Outdated Show resolved Hide resolved
src/pages/home/HeaderView.js Outdated Show resolved Hide resolved
@Luke9389
Copy link
Contributor Author

For some reason I'm not able to reply to this comment so I'l do that here.

This is a good point. Since Expensicons is a subset of func, the Expensicons check isn't really doing anything. I added the func because I don't think the Zoom and Google Meet Icons should go in the Expensicons file. Perhaps we could make another file for non-expensify icons that we could then use here. Something like ThirdPartyIcons or OtherIcons and then the type check could be

PropTypes.oneOfType([
        PropTypes.oneOf(_.values(Expensicons)),
        PropTypes.oneOf(_.values(ThirdPartyIcons)),
        ...

What do you think @marcaaron?

@marcaaron
Copy link
Contributor

I don't have a strong preference tbh, but I would lean towards just keeping the propTypes simple.

@Luke9389
Copy link
Contributor Author

Ok cool, then I think I'll just go for func and take the Expensicons check out 👍

@Luke9389
Copy link
Contributor Author

Updated to address most recent review (I also changed the animation on close to go up, rather than down, which isn't reflected in the commit names)

@marcaaron marcaaron merged commit c6e2eff into master Apr 1, 2021
@marcaaron marcaaron deleted the luke-add-video-chat-links branch April 1, 2021 00:24
@isagoico
Copy link

isagoico commented Apr 1, 2021

Title:
Desktop - Chat - Video call modal only visible in full screen mode

Expected Result

Video call modal should always be visible

Actual Result

Video call modal only visible in full screen mode

Action Performed

  1. Install desktop build
  2. Login with an existing account
  3. Open chat and select video call
  4. Resize app

Platform

Issue confirmed in:

Desktop: ✔️

Build: 1.0.11-0

Notes/Images/Videos

Video

image
image

@Luke9389
Copy link
Contributor Author

Luke9389 commented Apr 1, 2021

@isagoico
I think I may know the cause of this problem.... This modal only determines its position once (on page load). So if you change the screen size at all without reloading the page, it will stay at the position it would have been in when it loaded.

Could I ask for a retest with a reload in between changing from fullscreen to normal?

If this does end up being the case, it's something we're aware of and plan to fix in a later PR.

@isagoico
Copy link

isagoico commented Apr 1, 2021

While exploring if this issue was also reproducible in web I found this behaviour:

Grabando.177.mp4

I asked a tester with MacOS to check if this was reproducible in the desktop app and indeed it was the same.
Seems like it's the behaviour Luke mentioned above. Will check off the PR since it was a pass and this issue it's a known behaviour.

@Luke9389
Copy link
Contributor Author

Luke9389 commented Apr 1, 2021

Thank you @isagoico 🙇

@Luke9389
Copy link
Contributor Author

Luke9389 commented Apr 1, 2021

Also I hope you're enjoying Valheim (and maybe Skatebird as well?) 😄

@isagoico
Copy link

isagoico commented Apr 2, 2021

@Luke9389 QQ, In mobile app, is it expected that we are redirected to this screen instead of the new meeting. In web we are redirected to the already created meeting in google meets.

@Luke9389
Copy link
Contributor Author

Luke9389 commented Apr 2, 2021

I think this will depend on whether you have the google meet app or not. Functionally, it's the same because our current solution still relies on the user to copy paste the invitation link into the chat anyway. I think this is fine.

@shawnborton
Copy link
Contributor

Sorry for the late feedback, but for desktop - is it possible to animate the call menu's starting launch point from the call icon itself and not from the very top of the application?

@roryabraham
Copy link
Contributor

is it possible to animate the call menu's starting launch point from the call icon itself and not from the very top of the application?

It's possible, yes. But I do think it might be more complexity than is worth it, because right now we're just using a string to define a pre-made animation, but I think to do what you've suggested would require a custom animation.

@shawnborton
Copy link
Contributor

Sounds good. I can see where we will want this in other places too, but maybe we can wait until we have more use cases for them and then we can create a contributor issue for it.

@Luke9389
Copy link
Contributor Author

Luke9389 commented Apr 5, 2021

Shawn, keep in mind that if you go from full screen to windowed, the position of this modal will be off. It's possible the effect is more dramatic on your end for that reason.

@shawnborton
Copy link
Contributor

I didn't change the size of my screen. I am just observing that the option menu launches from the top edge of the screen, which is weird, because my mouse clicked on an icon that was not at the top edge of the screen.

@marcaaron
Copy link
Contributor

Can't we just use a simple fade in/out animation like we do when we right click to reveal the other context menu?

@shawnborton
Copy link
Contributor

Oh, I love that idea!

@Luke9389
Copy link
Contributor Author

Luke9389 commented Apr 6, 2021

Sounds good to me! I'll whip up a PR for this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants