invisible-college / tawk.space

Social video chats
https://tawk.space
Apache License 2.0
14 stars 1 forks source link

When you mouse over a group, they should also hear YOU #12

Closed toomim closed 7 years ago

toomim commented 7 years ago

I just cleaned up the audio volume calculations: https://github.com/invisible-college/tawk.space/commit/552ceae5b69bbde2316c9af246c971865571f5b5

It's working well for us in considerit. When I mouse over a buddy's group, I can hear them. However, they cannot hear ME! This is gonna be confusing, because in real life, whenever you can hear someone, they can probably hear you too. Mousing over a group would be a great way to say "Hey guys, wanna come join my group?"

So I think we need to pass through the mousover group information to the server, because other people need to know when you are mousing over them so that they know to increase your volume. Maybe we should design this at the same time as making groups globally editable (https://github.com/invisible-college/tawk.space/issues/10)? Do these designs interact?

karth295 commented 7 years ago

On point 1, yeah that makes sense to me. In the future we should have a subtle notification if you're lurking in a group for more than some time (e.g. 10 seconds) that you can join the group by dragging yourself. I like Hangouts's subtle notification when you're muted but talking.

On the other hand, how does your buddy's group react when they hear a random voice talking to them? Should there be some visual cue that an unseen person is talking?

karth295 commented 7 years ago

On the architecture of state, we were imagining a global '/groups' state that looked like this:

[
  {
    gid: 1,
    members: [1, 2, 3],
  }
]

We could expand the /groups state like this:

[
  {
    gid: 1,
    members: [1, 2, 3],
    lurkers: [4, 5, 6],
  }
]

On the frontend, rather than setting volume per group, you need to figure out the volume of individuals.

if not lurking:
  if in group:
    listening = group.members
  else:  # not in group
    listening = everybody
else: # lurking
  listening = lurking_group.members + lurking_group.lurkers
  if in group:
    listening += group.members
toomim commented 7 years ago

That code looks great! I'd add that instead of gid: 1, if we make this key: '/group/1', then the group's state/widget can update/rerender independently over statebus whenever someone mouses into it.

For the UI, I think the "lurker" (or should we call them a "voyeur"?) should also go from opacity .5 to 1 to make it obvious that you can now talk to and hear from them. I think that solves the problem, no?

I guess they are actually more than lurking or voyeuring, they are talking too. I would probably call them a mouseoverer.

toomim commented 7 years ago

Hey @karth295 is this done? I think you did it last night.

toomim commented 7 years ago

Marking this closed cause it looks like it's working. :)