Commit Graph

363 Commits

Author SHA1 Message Date
Leonard Kim 74ddae4a6a feat(device-errors): move device error dialogs to notifications
- Create a notification component for displaying a toggle.
- Create an action for showing the component if allowed by
  the local storage setting and for saving the setting to
  local storage.
- Remove all notifications having a timeout by default so the
  device error notification must be dismissed manually.
- Split the camera and mic error dialog into two separate
  notifications.
2017-08-01 16:33:00 -07:00
virtuacoplenny c04ef05058 feat(presence): display status in thumbnail and large video (#1828)
* feat(presence): display status in thumbnail and large video

- Create a React Component for displaying presence. It currently
  connects to the store for participant updates but in the future
  should not be as smart once more reactification occurs.
- Modify filmstrip css so the presence status displays horizontal
  center and below the avatar.
- Modify videolayout css so the presence status displays horizontal
  centered and with a rounded background.
- Dispatch presence updates so the participant state can be update.
- Update message position on large video update to ensure message
  positioning is correct.

* squash: do not show presence message if connection message is displayed
2017-07-31 18:33:22 -05:00
paweldomas e818fa1e9e fix(API): early audio muted status
Apply the same early audio muted logic as for the video.
2017-07-28 12:06:42 -05:00
paweldomas d2e8b13add feat: add config.startWithAudioMuted config.startWithVideoMuted 2017-07-28 12:06:42 -05:00
paweldomas 68f4a4ae9f ref: enable/disable microphone button
Make toolbar's microphone button enabled whenever there are any
'audioinput' devices available and allow to add audio during
the conference even if microphone permissions were denied on startup.
2017-07-28 12:06:42 -05:00
paweldomas 122a7f6346 fix(AudioOnly+web): crash when untoggle audio only
Because on web video track is stored both in redux and in 'localVideo'
field, video is attempted to be unmuted twice when turning off the audio
only mode. This will crash the app with 'unmute operation is already in
progress'. This commit will prevent from taking action from the web
world if the video track already exists and will make the redux side
rollback unmuted status in case unmute fails.
2017-07-25 11:05:02 +02:00
Saúl Ibarra Corretgé 2525bb2805 Merge pull request #1802 from jitsi/start_in_audio_only
Start in audio only
2017-07-24 14:32:20 +02:00
paweldomas e08171f602 fix: video muted out of sync
When video is unmuted when toggling off the audio only mode it
dispatches video muted status, but does not roll it back in case it
fails. That was causing toolbar button on Web to display incorrect
video muted status.
2017-07-24 13:54:38 +02:00
Lyubo Marinov 96e0c56bde [RN] Don't override config values 2017-07-21 17:40:09 -05:00
paweldomas 6ac23c8086 fix(conference): early video muted state
If muteVideo is called, before local tracks have been initialized it
will be synced up once the tracks are created (or not).
2017-07-21 15:05:09 +02:00
paweldomas a5f61714bd fix: unmute video on audio only switch off
Will unmute local video (and ask for permissions if needed) in case user
started in audio only mode and is turing it off.
2017-07-21 15:04:37 +02:00
paweldomas 00d3d3c09a fix(VideoLayout): muted for no tracks
Will make the UI display audio/video muted icon for remote participants
with no audio/video track.
2017-07-21 15:04:03 +02:00
paweldomas 6493b09565 feat: add config.startAudioOnly
When the 'startAudioOnly' config option is set to true the conference
will start in the audio only mode.
2017-07-21 15:03:28 +02:00
Leonard Kim 955542f4a5 feat(speaker-status): update speaker status in redux
The speakerStatus field already exists as part of the objects
in the participant reducer. When the library updates the
connection status of a user, plumb that update through to redux.
2017-07-21 14:12:15 +02:00
Leonard Kim 44bbd26c96 ref(stats): process stats through one pub/sub
Instead of passing stats through UI then VideoLayout then the
SmallVideo, pass stats directly to what uses it--ConnectionIndicator.
This also bypasses adding the stats to the store, as they do not
seem to be something that needs to be shared or stored app-wide
just yet.
2017-07-19 15:11:35 -07:00
Lyubo Marinov b62b296080 Fix typos. Apply consistent formatting 2017-07-18 16:43:58 -05:00
Lyubo Marinov a690b9d5e1 [RN] Handle denied getUserMedia permissions 2017-07-18 16:41:39 -05:00
Saúl Ibarra Corretgé c97daff506 Merge pull request #1775 from jitsi/start_screen
Add config.startScreenSharing
2017-07-18 13:51:57 +02:00
paweldomas 8093043d39 style(conference.js): style fixes 2017-07-18 12:45:40 +02:00
paweldomas 3fbb022ffb ref(conference): use options in init tracks 2017-07-18 12:45:12 +02:00
paweldomas 117d3bb110 ref(conference.js): show screensharing error first
If there will be microphone error it will cover any screensharing
dialog, but it's still better than in the reverse order where
the screensharing dialog will sometime be closing the microphone alert
($.prompt.close(); is called).
2017-07-17 15:32:03 +02:00
paweldomas 3926d705ad feat: add config.startScreenSharing
Will try to use screensharing instead of camera video from
the beginning.
2017-07-17 15:32:01 +02:00
paweldomas 5b5470ec66 ref(conference.js): createInitialLocalTracksAndConnect
Make 'createInitialLocalTracksAndConnect' not static.
2017-07-17 15:31:48 +02:00
Lyubo Marinov 7f041170f7 Consistent formatting 2017-07-16 03:44:07 -05:00
bbaldino 7d99c54ec8 fix an error when testing a result from a method that returns a promise 2017-07-14 18:55:18 +00:00
paweldomas b84e910086 feat: add option to disable desktop sharing
config.disableDesktopSharing - when set to false will disable desktop
sharing

interfaceConfig.DESKTOP_SHARING_BUTTON_DISABLED_TOOLTIP - when value is
assigned, will not hide the desktop sharing button completely, but show
as disabled with this value used as the tooltip text.
2017-07-14 10:14:00 -05:00
paweldomas 21957c8bf2 fix(conference): disable video icon
Explicitly calls 'updateVideoIconEnabled' in case both audio and video
permission were not granted and device list changed callbacks will not
be executed (check in lib-jitsi-meet that it requires GUM call to
succeed at least once for device list changed events).
2017-07-12 10:29:18 -07:00
paweldomas 63377a2f76 ref(conference): try video only
Will make an attempt to create video only stream in case microphone
permissions were not granted.
2017-07-12 10:29:18 -07:00
paweldomas 2281b1acd2 ref: enable/disable video button
Dynamically enables/disables the toolbar video button. Prior to that
commit if we would start with no video there would be no way to enable
it later on.
2017-07-12 10:29:18 -07:00
paweldomas 6655ae5a84 fix(conference): do not mute when screen sharing
Screen sharing video should not be muted if video input device is
disconnected.
2017-07-12 10:29:18 -07:00
paweldomas c4c100e26a feat(conference): restore video after screen sharing
Will restore the camera video state from before screen sharing was
started (and will mute it if it was muted).
2017-07-12 10:29:18 -07:00
paweldomas a7025c41f6 fix(conference): do not go back to video
Do not go back to video from screen sharing if there was no video stream
at the time when screen sharing was being started.
2017-07-12 10:29:18 -07:00
paweldomas d84ab20a47 fix(conference): start camera later on
Instead of disabling the video button in the toolbar, mark it as muted,
so that the user can click it to try enable video later on, even if
joined without video (either declined permission or was starting with
screen streaming and dismissed the dialog).
2017-07-12 10:29:18 -07:00
hristoterezov 1498245b9e fix(remotecontrol): Show error on cancel of desktop picker 2017-07-09 22:42:35 -05:00
hristoterezov dc8198100b feat(remotecontrol): Make sure the receiver is always sharing entire screen 2017-07-09 16:34:08 -05:00
hristoterezov 1a9a8a2098 feat(SS): pass the source type to lib-jitsi-meet. 2017-07-07 17:45:24 -05:00
hristoterezov 814d56c25c feat(remotecontrol): multi monitor support 2017-07-06 21:20:35 -05:00
virtuacoplenny 928181cd7a feat(display-name): convert to React (#1672)
* feat(display-name): convert to React

- Create a new React Component for displaying and updating display
  names on small videos
- The updating of the Component is defined in the parent class
  SmallVideo, which children will get access to through prototype
  copying
- Create a new actionType and middleware so name changes that occur
  in DisplayName can be propogated to outside redux
- Update the local video's DisplayName when a conference is joined
  or else the component may keep an undefined user id

* squash: query for the container, not the el owned by react
2017-06-28 22:35:43 -05:00
paweldomas e7a4318e8c ref(conference.js): remove global promise
Get rid of global APP.conference.screenSharingPromise.
2017-06-28 15:08:09 -05:00
Leonard Kim fe4de31e57 feat(tracks): place local tracks in the redux store
- Add tracks to the redux store by intercepting where the
  tracks actually get used via conference.replaceTrack
- While the replace call is unique to web, the _dispose and
 _addTracks calls use existing native code implementations
- Between _dispose and addTracks is a call to update mute state.
  Without it, when changing devices or videoType while muted,
  the user will stay muted (whereas existing web behavior
  causes unmute). This is due to middelware calling
  _syncTrackMutedState to make the track mute if the user is
  currently muted.
- Move the rest of ConferenceEvents.TRACK_MUTE_CHANGED into
  middleware so the event is no longer used
- Note: This change does not guarantee the track state in the
  redux store will be 100% accurate, specifically the attribute
  videoStarted. Muted and videoType should be accurate.
2017-06-23 10:33:05 -05:00
Leonard Kim 2a446b8799 feat(tracks): place remote tracks into the redux store
- Use actions trackAdded and trackRemoved to add and remove remote
  tracks from the redux store
- Emit out to non-react components on track added and removed in
  the track middleware
- Emit out to existing non-react components on track mute and
  video type changes
2017-06-23 10:33:05 -05:00
Leonard Kim 0451e7c9e7 fix(conference): ensure avatar url and email changes act on strings
Both conference.changeLocalEmail and conference.changeLocalAvatarUrl
are exposed in the external api. It is possible for users to then
pass in non-string values. To make it more visibly obvious of the
error and to prevent script errors, convert whatever is passed in
into a string.
2017-06-07 13:25:24 -05:00
paweldomas 12d7e61362 feat(VideoLayout): add ninja icon
Add ninja icon which wil be displayed when user's connection status is
inactive.

Apply grey filter only for interrupted state.

Do not use isLastN directly, but check ParticipantConnectionStatus.
2017-06-06 11:13:02 -05:00
Lyubo Marinov d437f3db03 [React] Call/ring overlay
Rewrite the non-React RingOverlay into the React Component CallOverlay
in a way which makes it easier to port to React Native.
2017-06-06 00:11:39 -05:00
Lyubo Marinov ec2e6525ac Fix jsdocs 2017-05-31 00:53:53 -05:00
Lyubo Marinov 66ababc6c8 Comply w/ codying style: naming, formatting, etc. 2017-05-25 10:56:08 -05:00
virtuacoplenny d5b40280ab fix(vertical-filmstrip): different label animations for filmstrip states (#1596)
* fix(vertical-filmstrip): different label animations for filmstrip states

Instead of one timing for sliding the video status label left and right,
have different timings depending on the filmstrip state. To facilitate
triggering the different animations, add more classes to the labels
that need to move that specify the filmstrip state.

- Faster transition if focusing on self-view with videos present so
  the label does not overlap videos transitioning from 0 opacity.
- Transition delay when de-focusing on self-view with videos present
  so videos have time to go away before the label moves over them.
- Maintain no movement if there are no videos, regardless of
  filmstrip toggle state.
- Different delays for when the filmstrip is being toggled visible
  and hidden if there are remote videos visible.

* SQUASH: remove remote videos count

* SQUASH: add docs to scss
2017-05-24 20:57:55 -05:00
Leonard Kim 27f968e753 fix(filmstrip-only): hide video label, always show remote thumbnails 2017-05-24 13:23:21 -07:00
Leonard Kim 2333249b05 feat(1-on-1): Initial implementation
- Expose an api on Filmstrip to hide the remote videos container, which does so
  by adding a class
- Modify listeners for user join, leave, share video to call the api
- Hide the container when there is 1 or fewer remote participants
- Always show the container if self view is in focus
- Show the container if the number of remote thumbnails does not match the count
  of remote participants, such as the case of sharing a video
2017-05-23 13:28:27 -07:00
yanas 2855ea1500 Adds dial-out UI. 2017-05-23 09:00:40 -05:00