Compare commits

..

2177 Commits
925 ... 2176

Author SHA1 Message Date
Leonard Kim
9c6afc2062 fix(dial-out): appease FieldText warning for onChange prop 2017-07-31 13:21:49 -05:00
Lyubo Marinov
dcc6ce025f Convert a function to an asynchronous redux action creator 2017-07-31 12:26:39 -05:00
paweldomas
40c9f583fa ref(tracks): remove duplication in mute/unmute 2017-07-31 12:26:39 -05:00
Leonard Kim
3e84d8b3b6 ref(dial-out): use AtlasKit FieldText for inputs
- Swap the telephone input with FieldText.
- Swap the dropdown trigger input with FieldText for styling
  consistency with the telephone input.
- Wrap the dropdown trigger so it can be modified with jitsi css.
- Use flexbox to have the trigger and input align horizontally
  but have the input take up width if the trigger is not displayed.
2017-07-31 11:44:56 -05:00
Saúl Ibarra Corretgé
0983ef48b5 [RN] Fix root component's prop types 2017-07-31 15:30:31 +02:00
virtuacoplenny
da1c760abf feat(notifications): implement a react/redux notification system (#1786)
* feat(notifications): implement a react/redux notification system

* squash into impl explicit timeout, style

* ref(notifications): convert toastr notifications to use react

* ref(toastr): remove library

* squash into conversion: pass timeout

* squash into clean remove from debian patch
2017-07-28 12:56:49 -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
Saúl Ibarra Corretgé
bfa5f4c953 [Android] Fix resource leak when JitsiMeetView is destroyed
In iOS this is automagically done in the view destructor, bunt we don't have
that luxury in Java we have to do it manually.

The new disponse() method MUST be called when the Activity holding the view is
going to be destroyed, typically in the onDestroy() handler.
2017-07-28 10:50:12 -05:00
Saúl Ibarra Corretgé
03b043ca2b [Android] Destroy containes when they are not visible
Whatever I've tried so far ends up failing in really weird ways, so let's admit
defeat, for now. Destroy containers only on Android.

This shall be revisited when we update RN to version >= 0.43 and we have
"display: 'none'" available.
2017-07-28 10:25:46 -05:00
Saúl Ibarra Corretgé
d00ee3d7b6 [Android] Add an example for loadURLObject 2017-07-28 09:19:07 -05:00
Saúl Ibarra Corretgé
aaf5dd75fa [iOS] Fix loading initial URL when app is closed
We must not pass nil as the URL, that will translate to null and we won't be
able to load the initial URL which is passed as the launch parameters.
2017-07-28 09:18:35 -05:00
Saúl Ibarra Corretgé
f1c9e57b43 [RN] startWithAudioMuted & startWithVideoMuted 2017-07-27 16:48:38 -05:00
Lyubo Marinov
e542af28a2 [RN] Converge with Web's ExternalAPI a bit
Web's ExternalAPI accepts an object with properties as one of its
constructor arguments and from which it generated a URL. Mobile's
JitsiMeetView.loadURLObject is supposed to accept pretty much the same
object.
2017-07-27 16:48:38 -05:00
damencho
9778aabe98 Uses languages.json to obtain supported languages. 2017-07-27 16:36:22 -05:00
Saúl Ibarra Corretgé
1fae0ee780 [RN] Update react-native-background-timer dependency
Our fixes have been applied upstream and a release has been made.
2017-07-27 11:50:01 +02:00
Saúl Ibarra Corretgé
1fb31b6773 [iOS] Fix crash when a nil URL is loaded
NSDictionary doesn't support nil values, they must be objects, so use NSNull
instead, which is the kosher way to do it.
2017-07-27 11:33:56 +02:00
Lyubo Marinov
9871580e6d [iOS] Completeness (maybe) 2017-07-26 15:54:58 -05:00
Lyubo Marinov
3546cf4915 Fixes jsdocs, formatting 2017-07-26 15:54:57 -05:00
Lyubo Marinov
a2c2d3bee1 [RN] Alternative to JitsiMeetView.loadURL w/o URL
Introduces loadURLObject in JitsiMeetView on Android and iOS which
accepts a Bundle and NSDictionary, respectively, similar in structure to
the JS object accepted by the constructor of Web's ExternalAPI. At this
time, only the property url of the bundle/dictionary is supported.
However, it allows the public API of loadURLObject to be consumed. The
property url will be made optional in the future and other properties
will be supported from which a URL will be constructed.
2017-07-26 15:53:35 -05:00
Lyubo Marinov
e5e7b59f43 Upgrade NPM dependencies/packages 2017-07-26 12:08:20 -05:00
Lyubo Marinov
980d48e00b Fix typo 2017-07-26 10:40:05 -05:00
Saúl Ibarra Corretgé
51934dac1b [Android] Fix gradle version with Android Studio 3.0 Canary 8 2017-07-26 17:30:45 +02:00
Lyubo Marinov
f0ab835b46 [RN] Add loadURLString to JitsiMeetView
Initializing a new URL/NSURL instance is a chore especially when one
takes into account that the JavaScript side (1) is loading the URL
asynchronously and (2) is capable of parsing strings that may or may not
be represented as URL/NSURL.

The Android method loadURLString(String) may have been called
loadURL(String) to overload loadURL(URL) but I didn't want to do that
because:

1. It would not be compatible with existing source code such as
loadURL(null) which would have become ambiguous.

2. I wanted to achieve better convergence with the iOS API.
2017-07-25 19:07:01 -05:00
Lyubo Marinov
6c488cc613 [RN] Simplify hiding Container components 2017-07-25 13:58:45 -05:00
Saúl Ibarra Corretgé
d3c408ae2e [RN] Simplify hiding Container components
When a Container is not visible there is no need for it to react to touch
events, thus avoid wrapping it in a touch component.

In addition, simplify the style needed for hiding the component. Moving the view
out of the window boundaries no longer works on RN 0.42 on iOS. Seting the size
to 0 works well on both platforms, but in the future (when we upgrade to RN >=
0.43) we should switch to display: none:
4d69f4b2d1
2017-07-25 13:58:44 -05:00
hristoterezov
e8223bbb4a fix(remotecontrol): Use own scope for the messages. (#1787) 2017-07-25 08:40:57 -07:00
Saúl Ibarra Corretgé
fa86d2ab9e Merge pull request #1815 from jitsi/fix_audio_only_off
fix(AudioOnly+web): crash when untoggle audio only
2017-07-25 14:05:09 +02: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
Lyubo Marinov
24eb37ae1e [RN] Fix jsdocs, formatting. Add flow 2017-07-24 16:08:46 -05:00
Saúl Ibarra Corretgé
2094b15432 [RN] Workaround for Android view clipping
In another installment of "how on earth?!", using a 1px border instead of a
0.2px border fixes view clipping on a device where it didn't work before
(Moto X Play).

Observations:

- When nothing was rendered, rotating the device made the buttons show up, this
  makes me think the Surface is not properly composited with the toolbar view
  for some reason. Why this happens in some devices and not in others remains a
  mistery.

Other approaches attempted:

- Setting View.collapsed to false so it will remain in the view hierarchy. It
  made no effect.

- Setting View.needsOffscreenAlphaCompositing to true. It made no effect.

Just like before, I came up with this workaround by accident, but couldn't find
another way, so here we go again.
2017-07-24 15:01:37 -05:00
Saúl Ibarra Corretgé
157eadc44a [RN] Don't destroy containers when they are not visible
This essentially reverts
023359b9d2

In the filmstrip we keep a container full of thumbnail views. Destroying these
every time we want we want to hide it is costly, as new renderers have to be
recreated, and they lack context, so there is an increased chance for "black
thumbnails".
2017-07-24 15:01:37 -05: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
db88c555dc Fix warning 2017-07-21 17:40:09 -05:00
Lyubo Marinov
96e0c56bde [RN] Don't override config values 2017-07-21 17:40:09 -05:00
yanas
b0ffe2e63f Remove primary toolbar splitter (#1811) 2017-07-21 14:21:39 -07:00
yanas
06234066b6 Fixes some styles and variables (#1809)
* Fixes some toolbox/toolbar styles and variables

* [squash] Fixes variable name to fit better its purpose

* [squash] Fixes secondary toolbar variable name
2017-07-21 12:45:04 -07:00
Leonard Kim
1897c395ec fix(icons): set a size prop for AtlasKit icons
With the upgarde of @atlaskit/icon to 7.0.0, the size prop
essentially became required to maintain its appearance in the
jitsi app, otherwise it'll unexpectedly try to take up the
available space and cause minor display issues.
2017-07-21 14:25:39 -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
George Politis
68d40b4fa4 Merge pull request #1738 from virtuacoplenny/lenny/connection-stats-pub-sub
ref(stats): process stats through one pub/sub
2017-07-21 12:22:55 +02:00
Aaron van Meerten
c369330054 Merge pull request #1797 from jitsi/module-poltergeist_update
Module poltergeist update
2017-07-20 16:06:50 -05:00
Aaron van Meerten
b6efdb533d Handles the async wrapping of the mod_muc_size functions
fixes handling of keyserver ASAP validation of tokens
wraps room and room-size APIs
2017-07-20 16:04:16 -05:00
Aaron van Meerten
22e9dc9893 Handles async context for all poltergeists
set up async context for all poltergeist calls
utils lib now has async wrapper for event handlers
2017-07-20 15:56:45 -05:00
damencho
8047fdf5a2 Makes possible for poltergeist to set status just before leaving. 2017-07-20 14:16:42 -05:00
damencho
2c873e8c7f Adds token verification for poltergeist accepted rest calls. 2017-07-20 13:56:55 -05:00
damencho
284b5f94b5 Adds initial status param when creating poltergeist. 2017-07-20 13:29:54 -05:00
bbaldino
6bcb9be364 Merge pull request #1806 from saghul/ff-simulcast-testing
config: document enableFirefoxSimulcast
2017-07-20 08:36:39 -07:00
Saúl Ibarra Corretgé
3c084c0082 config: document enableFirefoxSimulcast 2017-07-20 09:48:28 +02:00
bbaldino
a08ea37005 Merge pull request #1798 from virtuacoplenny/lenny/rename-hide-indicator
fix(connection-indicator): rename calls to hiding the indicator
2017-07-19 15:20:33 -07:00
Leonard Kim
2132cd6736 fix stat unsub, one loop for updating 2017-07-19 15:11:35 -07: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
Saúl Ibarra Corretgé
1d90826098 [RN] Use a more resilient way for testing if we are on React Native
navigator.product is read-only, so we don't run into the risk of it being
changed.
2017-07-19 16:40:06 -05:00
Saúl Ibarra Corretgé
4efbbe14b1 [Android] Require OpenGL ES 2.0
This was already an implicit requirement, as it's the only version implemented
in libwebrtc.

The reason to add this is to (defensively) try to filter old devices which may
not implement it.

WebRTC's own Android demo app defines this.
2017-07-19 16:36:42 -05:00
Lyubo Marinov
0b5431b795 [RN] Bind event handler once per instance, not per render 2017-07-19 16:33:57 -05:00
Lyubo Marinov
e7fc4739c4 Fixes jsdocs 2017-07-19 16:25:06 -05:00
damencho
f40faecfbe Fixes using correct field for domain in multidomain mode. 2017-07-19 11:36:49 -05:00
Saúl Ibarra Corretgé
f72932d125 [RN] Fix audio / video mute buttons when permissions are not granted 2017-07-19 14:38:38 +02:00
Saúl Ibarra Corretgé
ffc12ccc0e [RN] Disable camera switch button when video is muted 2017-07-19 14:30:36 +02:00
Saúl Ibarra Corretgé
03da40b56a [RN] Disable video mute and camera switch buttons when in audio only mode 2017-07-19 11:58:08 +02:00
Saúl Ibarra Corretgé
055df1c12e [RN] Add ability to disable a ToolbarButton 2017-07-19 11:50:24 +02:00
Lyubo Marinov
d87b8823e9 [RN] Don't open the camera on startup when there is no welcome page 2017-07-18 23:42:08 -05:00
Saúl Ibarra Corretgé
8225600b61 [RN] Don't open the camera on startup when there is no welcome page
The end goal of this patch was to avoid opening the camera when there is no
welcome page.

In order to achieve this, the logic for creating the local tracks was
refactored:

Before this patch local tracks were created when lib-jitsi-meet was initialized,
and destroyed when it was deinitialized. As a side note, this meant that when a
conference in a non-default domain was joined, local tracks were destroyed and
recreated in quick succession.

Now, local trans are created and destroyed based on what the next route will be,
and this happens when the target room has been decided. This allows us to create
local tracks the moment we need to render any route, and destroy them when there
is no route to be rendered. As an interesting byproduct, this refactor also
avoids the destruction + recreation of local tracks when a conference in a
non-default domain was left.
2017-07-18 20:42:20 -05: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
Leonard Kim
364ab5431c fix(connection-indicator): rename calls to hiding the indicator 2017-07-18 13:27:48 -07:00
damencho
4a9a8eec9a Send poltergeist presence update reusing previous presences.
If we do not reuse previous presences we lose avatar and name and people joining after the poltergeist creation will not be updated with those values.
2017-07-18 13:08:18 -05:00
damencho
308360fbe0 Cleans poltergeists table on remove occupant and when muc is destroyed. 2017-07-18 11:11:14 -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
Saúl Ibarra Corretgé
7361151203 feat(dialog): add missing export for actionTypes
The full-screen module uses the HIDE_DIALOG action to re-engage the full-screen
mode.
2017-07-18 13:35:24 +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
damencho
e6840981ca Handles removing poltergeists.
Adds http method to remove poltergeists. Adds configurable timeout after which poltergeists automatically are removed from the room.
2017-07-17 19:29:00 -05:00
damencho
64bb5563bc Returns error when there is no query, but params expected. 2017-07-17 17:38:29 -05:00
damencho
0cffbdb967 Fixes wrong parameter name. 2017-07-17 17:26:47 -05:00
Lyubo Marinov
72691eb2dc misc: fix dispatching actions twice when mapDispatchToProps is used 2017-07-17 13:59:04 -05:00
Saúl Ibarra Corretgé
0bf9a78e4c misc: fix dispatching actions twice when mapDispatchToProps is used
The functions need not return anything, or it will be dispatched as another
action.
2017-07-17 13:51:35 -05:00
Aaron van Meerten
0c446026d6 Merge pull request #1788 from jitsi/module-poltergeist
module-poltergeist
2017-07-17 13:21:57 -05:00
Saúl Ibarra Corretgé
326ce4217f [Android] Fix gradle and plugin versions with Android Studio 3.0 Canary 6 2017-07-17 11:32:57 -05:00
Kolokotronis Panagiotis
5db605b0cf [Docs] Web server config on install 2017-07-17 10:26:12 -05: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
Lyubo Marinov
e54744e5ef [Android] Use target API 23 2017-07-16 02:26:09 -05:00
Saúl Ibarra Corretgé
96bfcafc97 [Android] Use target API 23
This reverts commit c9a29153dd.

Now that react-native-webrtc supports the permissions system in 23, use it since
it provides a more pleasant experience to users.

In addition, fix a bug in the previous code: the React Native view must be
loaded after we have acquired the permission to draw on top of other apps,
otherwise our app may crash while we accept the permission, since React may try
to draw.
2017-07-16 02:26:09 -05:00
Lyubo Marinov
9a295723cf Consistent formatting 2017-07-16 02:25:26 -05:00
damencho
58d06fe7e6 A poltergeist module.
Thanks to Matthew Wild for the initial help of creating these.
Module with REST interface to create poltergeist participants and change their statuses.
When user with same id joins the room, the poltergeist is removed.  We also make sure that that user uses same username when authenticates. This way we are sure that user will join the room with the same nick as the poltergeist.
2017-07-14 22:18:23 -05:00
damencho
cc79b073f0 Fires event before setting username, allows listeners to override it.
This is a hook to override the username that will be used when authenticating token users (which are using anonymous login with auto-generated username).
2017-07-14 22:12:56 -05:00
damencho
599d84a889 Stores the room name from the bosh url into the session. 2017-07-14 22:08:41 -05:00
damencho
2b1e8cdeff Creates util for modules and adds method get_room_from_jid in it. 2017-07-14 22:03:36 -05:00
virtuacoplenny
ea0c333f4b Merge pull request #1785 from jitsi/remove-styles
Remove unneeded css styles
2017-07-14 16:14:46 -07:00
virtuacoplenny
4eef52b84e Merge pull request #1784 from bbaldino/device_list_available_fix
fix an error when testing a result from a method that returns a promise
2017-07-14 15:44:58 -07:00
yanas
3e1dc298c8 Removes unneeded css styles 2017-07-14 14:49:28 -05:00
virtuacoplenny
244de8096f feat(local-video): convert to react (#1705)
* feat(local-video): convert to react

- Create a VideoTrack component for displaying a video element.
  This mirrors native also having a VideoTrack component.
- The VideoTrack component does not let React update it to prevent
  the video element from re-rendering, which could cause flickers
  and would not work with temasys's overriding of the video element.
- VideoTrack extends AbstractVideoTrack to mirror native
  implementation and to get the dispatch of the onplaying event.
- Remove the onclick handler on the video element. Honestly, I
  didn't get it to work, and did not try, but it is also unnecessary
  because another handler already exists on the video wrapper.

* ref(device-selection): VideoInputPreview uses VideoTrack to show video

* squash into conversion: change css selectors

* squash into conversion: mix in abstract props

* squash into conversion: change shouldComponentUpdate check

* squash: update comment about why triggerOnPlayingUpdate is used
2017-07-14 14:22:27 -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
virtuacoplenny
37328b3995 Merge pull request #1757 from jitsi/rc_dialog_to_notification
fix(remotecontrol): Replace info dialogs with notifications.
2017-07-14 11:32:54 -07:00
hristoterezov
b8d3e82ae7 fix(remotecontrol): Replace info dialogs with notifications. 2017-07-14 12:58:37 -05:00
hristoterezov
07a0e3d8ff fix(iframe_api): Remove min height/width. 2017-07-14 12:56:20 -05:00
hristoterezov
70122789e7 fix(iframe_api): Change the format of the arguments in the constructor 2017-07-14 12:56:20 -05:00
hristoterezov
3736d6ca78 fix(iframe_api): Remove unnecessary div that wraps the iframe 2017-07-14 12:56:20 -05:00
hristoterezov
07158e8071 style(iframe_api): Adds _ for every non public property 2017-07-14 12:56:20 -05:00
hristoterezov
cc6fcfd982 feat(iframe_api): Getter for the iframe 2017-07-14 12:56:20 -05: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
virtuacoplenny
10766e6958 Merge pull request #1778 from jitsi/base-css-fix
Fix(base.scss): Don't restyle inputs, selects and buttons
2017-07-13 17:08:31 -07:00
Aaron van Meerten
d752e8b864 accept 'avatar' as well as 'avatarUrl' for avatar field 2017-07-13 15:49:25 -05:00
George Politis
d335669afe Merge pull request #1765 from jitsi/feat-local-remote-relayed
feat: Adds TURN indication.
2017-07-13 21:16:40 +02:00
yanas
7ebd2b2cd4 Fix(base.scss): Don't restyle inputs, selects and buttons 2017-07-13 14:15:07 -05:00
Aaron van Meerten
622d4ba89c added checks for audience and issuer values (#1772)
* added checks for audience and issuer values
default audience and issuer checks to validate only appId
added missing documentation lines from the previous PR for context_user and context_group session values

* support for accepting any audience
option set to accept any audience by default
2017-07-13 13:30:17 -05:00
Saúl Ibarra Corretgé
3de6f1cd7f feat(external_api): make sure the created iframe has no border 2017-07-13 13:05:30 -05:00
Saúl Ibarra Corretgé
7b1639569e feat(external_api): make height / width calculation more resilient 2017-07-13 13:05:30 -05:00
George Politis
62613ff02e feat: Adds TURN indication. 2017-07-13 17:00:27 +02:00
Leonard Kim
4eacbd9f61 fix(tracks): remove mute and videotype listeners on track remove
Listeners were set for when a track muted or changed its video
type, but the listeners were never removed. This would could
cause events to keep firing on the removed tracks, which would
cause redux to fire and error because the tracks were no longer
known. That the tracks still fire events after removal is
another issue...
2017-07-13 09:37:39 +02:00
virtuacoplenny
884509faee Merge pull request #1771 from jitsi/change-thumbnail-menu
Changes video thumbnail menu icon
2017-07-12 18:54:07 -07:00
yanas
2e2b1d47c0 Changes video thumbnail menu icon 2017-07-12 17:22:07 -05:00
Aaron van Meerten
fac6c30b1c use "sub" instead of "aud" to confirm tenant domain settings
stick user and group from token context into session if available
2017-07-12 12:57:55 -05:00
Leonard Kim
1ad614e812 fix(add-people): remove line break from searchPeople request
Chrome has deprecated line breaks in requests. The template
literal used for the searchPeople url has a line breaks. Instead
of line breaking the request url, concatenate it together.
2017-07-12 12:54:26 -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
de2eee2e61 ref(VideoLayout): reduce 'forceUpdate' usage 2017-07-12 10:29:18 -07:00
paweldomas
badbedf0f5 ref(LargeVideoManager): getCurrentContainer
Remove duplication and direct access to kind of private 'state' field by
introducing 'getCurrentContainer' method.
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
paweldomas
751f27644f fix(VideoLayout): store userID in container
The container needs to store user's ID in order for the 'isOnLargeVideo'
logic to work correctly when user has no stream (previously it was
obtained from stream which can be null/undefined).
2017-07-12 10:29:18 -07:00
yanas
4ccd5c6072 Fix(AddPeopleDialog): Close dialog on submit (#1761)
* Fix(AddPeopleDialog): Fixes error state and close dialog

* (to-squash) Addresses comments
2017-07-12 08:35:00 -07:00
Saúl Ibarra Corretgé
bae609b296 Merge pull request #1763 from jitsi/dp_def_prop
fix(desktop_picker): Use defaultProps
2017-07-11 10:01:43 +02:00
Saúl Ibarra Corretgé
e78c70e53d misc: set supported Node version to >= 6 2017-07-10 17:45:25 -05:00
hristoterezov
cee523fbf1 fix(desktop_picker): Use defaultProps 2017-07-10 17:43:29 -05:00
virtuacoplenny
0481e4cf00 feat(indicators): move the "top toolbar" indicators to react (#1699)
* feat(indicators): move the "top toolbar" indicators to react

* wrap baseindicator
2017-07-10 17:29:44 -05:00
virtuacoplenny
fcda36a8e0 Merge pull request #1756 from jitsi/remote_control_mm
Remote control
2017-07-10 15:20:55 -07:00
yanas
f5d443d194 User Picker Implementation 2017-07-10 09:56:38 -07:00
yanas
47b6166d79 fix(StatelessDialog.web): Fixes stealing Enter events 2017-07-10 09:56:38 -07:00
Saúl Ibarra Corretgé
6fc1a3f45d [Android] Add comment on disabling JS packaging for dev builds 2017-07-10 17:42:39 +02:00
Saúl Ibarra Corretgé
ab7d1553db Merge pull request #1750 from jitsi/p2p_disabled
feat(config.js): add config.testing.
2017-07-10 10:13:25 +02: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
Saúl Ibarra Corretgé
2968f8edf8 [RN] Make the audio muted icon consistent with the web 2017-07-07 12:27:28 -05:00
Lyubo Marinov
5c094bf6e0 [RN] Fix disconnecting before the connection was established 2017-07-07 12:21:08 -05:00
Saúl Ibarra Corretgé
c4232b34ae [RN] Fix disconnecting before the connection was established
Keep track of the connection and conference objects so we can leave and / or
disconnect early, before the connection is established or the conference joined.
2017-07-07 09:37:04 -05:00
Saúl Ibarra Corretgé
99b856233d [iOS] Fix joining initial URL if app was closed
On iOS, if the app is closed the startup options are only passed as the
`launchOptions` dictionary of `applicationDidFinishLaunching`. Thus add a helper
method to be called from there by embedding applications so we can copy that
dictionary.
2017-07-07 08:57:49 -05:00
paweldomas
0f4c785705 feat(config.js): add config.testing. 2017-07-07 15:40:08 +02:00
hristoterezov
814d56c25c feat(remotecontrol): multi monitor support 2017-07-06 21:20:35 -05:00
Saúl Ibarra Corretgé
f878f54b4d [RN] Toggle audio-only icon based on state 2017-07-06 17:18:49 -05:00
Saúl Ibarra Corretgé
46a87e42ce [RN] Update audio-only icon
Match the one on the web.
2017-07-06 17:14:00 -05:00
Saúl Ibarra Corretgé
db26aa652b [RN] Update jitsi font icon selection 2017-07-06 17:14:00 -05:00
Saúl Ibarra Corretgé
8d1d3a9c42 [RN] Use same video mute indicator icon as on the web 2017-07-06 17:10:32 -05:00
Saúl Ibarra Corretgé
d5e89a60b7 [RN] Fix passing url prop to Root and App components
React (pun intended) to prop changes, that is, load the new specified URL.

In addition, fix a hidden bug in loading the initial URL from the linking
module: we prefer a prop to the URL the app was launched with, in case somehow
both are specified. We (the Jitsi Meet app) are not going to run into this
corner case, but let's be defensive just in case.
2017-07-06 15:54:56 -05:00
Lyubo Marinov
948d18f954 [Android] Fix "Minimum supported Gradle version is 4.1-milestone-1" 2017-07-06 15:20:09 -05:00
Lyubo Marinov
7dbba59dee [RN] Disconnect/hangup before joining a new URL 2017-07-06 15:00:29 -05:00
Lyubo Marinov
61fd4e4ce4 [RN] Fix passing url prop to Root and App components 2017-07-06 14:59:57 -05:00
Lyubo Marinov
9bd6bbfd95 Fix jsdocs. Simplify the source code 2017-07-06 14:59:57 -05:00
Saúl Ibarra Corretgé
cc9249ba1a [RN] Fix passing url prop to Root and App components
React (pun intended) to prop changes, that is, load the new specified URL.

In addition, fix a hidden bug in loading the initial URL from the linking
module: we prefer a prop to the URL the app was launched with, in case somehow
both are specified. We (the Jitsi Meet app) are not going to run into this
corner case, but let's be defensive just in case.
2017-07-06 14:59:57 -05:00
Boris Grozev
35fddfa8f4 fix: Removes the inclusion of local.html. 2017-07-06 10:51:44 -05:00
Saúl Ibarra Corretgé
82e10e1a00 [iOS] Don't bring the packager to the foreground upon launch 2017-07-06 14:07:20 +02:00
virtuacoplenny
84ae7df8f1 fix(filmstrip-only): vertically align center the toolbar (#1700)
* fix(filmstrip-only): vertically align center the toolbar

Use top 50% to position the toolbar's top at the vertical center
of the iframe. Then use transform 50% to move the toolbar itself
up 50% so its middle matches the middle of the iframe.

* squash: toolbox should center with filmstrip
2017-07-05 21:07:00 -05:00
bbaldino
5c199e2195 Merge pull request #1740 from bgrozev/refactor-deployment-info
Refactor deployment info
2017-07-05 18:41:38 -07:00
Lyubo Marinov
9aaf9a484d [RN] Fix TypeError: undefined is not an object (evaluating 'this.options.p2p.useStunTurn') 2017-07-05 16:34:06 -05:00
Saúl Ibarra Corretgé
4e4a9012c2 [RN] Fix iOS lockups / resprings
Apparently iOS doesn't like dangling background tasks very much, so update the
background timers plugin with a version which fixes this.

https://github.com/ocetnik/react-native-background-timer/pull/38

Also accomodate for the API changes upstream.

Credits to @lyubomir for finding the needle in the haystack.
2017-07-05 16:34:06 -05:00
Boris Grozev
4840db67ca fix: adds a hasOwnProperty check, uses "let". 2017-07-05 16:31:50 -05:00
Boris Grozev
b09613b943 ref: Uses config.deploymentInfo instead of window.jitsiDeploymentInfo. 2017-07-05 16:07:16 -05:00
Emil Ivov
66eac19058 Merge pull request #1739 from bgrozev/no-tabnabbing
No tabnabbing
2017-07-05 15:44:20 -05:00
Boris Grozev
aee5a9ca43 fix: Use https for links without a scheme. 2017-07-05 15:39:53 -05:00
Leonard Kim
129e54e262 fix(remote-menu): position volume slider in vertical center for firefox 2017-07-05 15:34:11 -05:00
Leonard Kim
0d4b77d7b1 fix(popover): set display before calculating width
Popover works by first creating a DOM element with display none
then having jquery calculate its width and new position and
then setting display to table. This does not work with p2p
connection stats, which are much wider than the default width
of the popover. What will happen is when display table is set,
the width will increase greatly so the positioning will be off.
The workaround here is to set display table as the default
display but toggle visibility instead.
2017-07-05 15:34:11 -05:00
Boris Grozev
b0eeb8a207 fix: Avoid tabnabbing
Reported by Manav.
2017-07-05 15:15:59 -05:00
Leonard Kim
ae67b2b28e fix(vertical-filmstrip): enable hardware acceleration for icons
Icons on the thumbnails can flicker when scrolling through videos.
To give rendering a bit more power, and thereby help with rendering
icons without flickering, force hardware acceleration.
2017-07-05 13:24:08 -05:00
Sergio Garcia Murillo
a97d02e0fd Change messageString to msgString in _requestRecordingToken
#1730
2017-07-05 10:05:22 -05:00
George Politis
88bfa61875 Merge pull request #1728 from saghul/unused-config-opts
feat(chore): remove unused interfaceConfig options
2017-07-05 14:34:11 +02:00
Saúl Ibarra Corretgé
4df914194c Merge pull request #1732 from jitsi/stun-turn-4p2p
docs: Documents the p2p.useStunTurn option.
2017-07-05 12:04:43 +02:00
George Politis
86c867ea71 docs: Documents the p2p.useStunTurn option. 2017-07-04 12:50:21 +02:00
Saúl Ibarra Corretgé
16e972d077 feat(chore): remove unused interfaceConfig options 2017-07-04 08:38:06 +02:00
Leonard Kim
152427e01b feat(small-video): convert the "toolbar" to react
Move display of audio muted, video muted, and moderator icons,
which make up the elements of the small video toolbar, into React
Components.
2017-06-30 14:21:44 -05:00
Boris Grozev
2a3c4cfb82 ref: Adds deployment info variables to config.js,
removes local.html
2017-06-30 13:37:11 -05:00
Emil Ivov
573aa168ea Update README.md 2017-06-30 11:25:32 -05:00
virtuacoplenny
0de032ebd7 feat(avatar): SmallVideo uses the existing Avatar component. (#1712)
* feat(avatar): SmallVideo uses the existing Avatar component.
2017-06-29 13:21:03 -05:00
Emil Ivov
ab81c2b56d Merge pull request #1713 from saghul/p2p-h264
feat(p2p): enable H.264 for P2P by default
2017-06-29 08:47:18 -05:00
Saúl Ibarra Corretgé
8a3cec4a9d feat(p2p): enable H.264 for P2P by default
On mobile we got the extra step of overriding the option and always set it to
true.
2017-06-29 11:22:32 +02:00
George Politis
2b0563ad35 Merge pull request #1710 from saghul/p2p-settings
feat(p2p): refactor configuration options
2017-06-29 11:13:26 +02: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
Saúl Ibarra Corretgé
4e5bc172c9 feat(config): allow overriding nested config objects
This makes it possible for the following URL params to work:

config.p2p.enabled=true&config.p2p.preferH264=true
2017-06-28 17:29:04 +02:00
Saúl Ibarra Corretgé
3ea2f00578 feat(p2p): refactor configuration options 2017-06-28 14:57:39 +02:00
Saúl Ibarra Corretgé
01ac394e92 [Android] Fix compileSdkVersion
It must match the major number in buildToolsVersion.
2017-06-28 10:51:49 +02:00
Leonard Kim
4ce5888b4c feat(connection-indicator): convert to react
- Create a new ConnectionIndicator component for displaying an
  icon for connection quality and for triggering a popover. The
  popover handling has been left in ConnectionIndicator for now,
  which follows the existing implementation.
- Remove the unused method "connectionIndicatorShowMore"
- Change the implementation of existing methods that update the
  connection indicator to call the same method which will rerender
  the indicator completely.
2017-06-27 15:58:00 -05:00
Saúl Ibarra Corretgé
35f79dd2b4 config: default resolution is now 720p 2017-06-27 08:25:34 -05:00
Saúl Ibarra Corretgé
cdb547dbd1 Merge pull request #1534 from jitsi/p2p_react_native
[RN] export RTCIceCandidate
2017-06-27 11:15:29 +02:00
damencho
00afc32b6b Handles '*' as room name in jwt.
Allows '*' in jwt to allow connecting to any room.
2017-06-26 10:51:06 -05:00
Daniel Ornelas
8a01067b62 Added post-script to the Release configuraiton to build iOS SDK as Universal framework 2017-06-23 19:39:53 -05:00
Daniel Ornelas
7c2d59033b Fixed nullable pointer warnings in iOS SDK 2017-06-23 19:39:41 -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
4a1efed4a8 feat(audio-level): convert SmallVideo AudioLevelIndicator to React 2017-06-22 11:14:41 -05:00
Lyubo Marinov
8e4864004b Revert "Speed react-native run-android up (more)"
Reverts commit d117989b55 because it does
not bundle the fonts assets and the JS bundle.
2017-06-22 09:21:25 -05:00
hristoterezov
486d0802a8 fix(largevideo): show the background video only for video container type 2017-06-21 16:19:30 -05:00
hristoterezov
c250da59d5 fix(videolayout): Resize calculations 2017-06-21 16:19:30 -05:00
Ilya Daynatovich
0aee5e5b48 Add blurring effect 2017-06-21 16:19:30 -05:00
Ilya Daynatovich
292c1689ba Add maximum zooming coefficient 2017-06-21 16:19:30 -05:00
Leonard Kim
0a1bd5a0c7 feat(popover): do not remove the popover on every update
With popover usage now only passing in React Components, the
logic of removing the popover and recreating its html with
every update is not necessary. Instead allow React to update
the popover contents.

Because of this change, mouse event handlers are not recreated
on each update, so it is possible for mouseleave to fire after
the size of the popover shrinks when collapsing to hide more stats,
forcing the mouse out of the popover. To prevent this, padding has
been added to the top of the popover so on resize the mouse will
still be over the popover. The padding has the added bonus of
fixing an issue where the popover would not close until mouseenter
was triggered after size collapse, but it adds the drawback of
requiring more upward mouse travel to close the popover.
2017-06-20 13:49:02 -05:00
Leonard Kim
e0d641a787 feat(connection-stats): convert connection stats display to react
Move all logic related to displaying a table of connection stats to a React
Component. The actual parsing logic was modified as little as possible as the
focus is moving display to React.
2017-06-20 13:49:02 -05:00
Lyubo Marinov
d117989b55 Speed react-native run-android up (more)
React Native's Gradle script does not bundle the JS bundle in the Debug
configuration. Copy that source code (and adapt it) into our sdk Gradle
script.
2017-06-20 13:14:30 -05:00
Lyubo Marinov
2fa7e777d6 Speed react-native run-android up 2017-06-20 10:32:44 -05:00
Saúl Ibarra Corretgé
be30dd09e9 [iOS] Add scheme for building only the SDK 2017-06-19 16:08:30 -05:00
Saúl Ibarra Corretgé
84aa3627b4 doc: add a note con the recommended Node + npm versions 2017-06-19 15:57:35 -05:00
Saúl Ibarra Corretgé
d7818be067 [iOS] Link with WebRTC.framework at the top level
Before, Jitsi Meet (the app) would only link with JitsiMeet.framework, which in
turn embedded WebRTC.framework. While possible, Apple doesn't allow apps with
nested frameworks to be submitted to the store. Now the app will link with
WebRTC.framework directly so there is no framework nesting.

A potential improvement here is to build WebRTC as a static library so it can
then be embedded in JitsiMeet.framework and completely hidden from the app.
2017-06-19 11:03:13 -05:00
bgrozev
c782d21a36 Merge pull request #1680 from jitsi/suspended-overlay-english
Improve English of the suspended overlay message
2017-06-19 09:43:51 -05:00
Saúl Ibarra Corretgé
7800e4047f Remove executable flag from font files 2017-06-19 09:26:26 -05:00
ibauersachs
61e846c4fd Commit from translate.jitsi.org by user ibauersachs.: 353 of 354 strings translated (0 fuzzy). 2017-06-16 21:31:08 +00:00
Ingo Bauersachs
957badc792 Improve English of the suspended overlay message 2017-06-16 23:09:09 +02:00
Lyubo Marinov
53954285c7 Fix flow (and npm run lint)
The npm library promise (https://github.com/then/promise) was updated
(roughly 2 hours ago) and our flow setup does not pass successfully on
it.
2017-06-16 12:59:36 -05:00
Lyubo Marinov
5cffe328a5 Simplify the source code 2017-06-16 12:06:59 -05:00
Lyubo Marinov
1da49d86a1 Speed webpack up 2017-06-16 12:06:59 -05:00
Lyubo Marinov
0d7aea377a Increase ES6 utilization in webpack.config.js 2017-06-15 22:46:18 -05:00
Saúl Ibarra Corretgé
617df1c69c [Android] Remove no longer used gradle options 2017-06-15 10:38:08 -05:00
bgrozev
0b75f5a4d0 Commit from translate.jitsi.org by user bgrozev.: 348 of 349 strings translated (0 fuzzy). 2017-06-15 15:38:13 +00:00
Lyubo Marinov
f200b17a33 webpack 2 2017-06-15 10:09:48 -05:00
Saúl Ibarra Corretgé
2db574810b [RN] Fix target reference in iOS scheme 2017-06-15 09:51:04 -05:00
Saúl Ibarra Corretgé
c9a29153dd [RN] Lower Android target SDK version to 22
API level 22 is below 23 (aka Marshmallow), which included an overhaul in the
permissions system. React Native recommends 22 (it's the default when you create
a new app) and there have been reports when set higher [0] and [1].

This also fixes a critical bug, wherein Jitsi Meet wouldn't request permissions
for the camera and microphone.

Last, this change also allows us to get rid of the overlay checking code,
because it was only needed for API level 23 or higher.

[0]: https://github.com/facebook/react-native/pull/10479
[1]: https://github.com/facebook/react-native/issues/10587
2017-06-15 08:20:33 -05:00
Lyubo Marinov
25ec8ac6a7 Prepare for eslint 4 2017-06-14 22:17:35 -05:00
hristoterezov
c8c44d62ed fix: some exports to make it work with webpack 2 2017-06-14 19:37:13 -05:00
hristoterezov
4d329b510f ref: module.exports -> export for the ES6 modules 2017-06-14 19:37:13 -05:00
paweldomas
a30e880876 fix(AudioInputPreview): do not care about TPC
TraceablePeerConnection argument is lib-jitsi-meet internal and the app
does not need to care.
2017-06-14 10:21:11 -05:00
Leonard Kim
5d1087e464 fix(vertical-filmstrip): prevent scaling based on video count
Vertical filmstrip has a scrollbar to scroll through all remote
video thumbnails instead of scaling width and height to force all
thumbnails to display on screen. The scaling is not necessary in
vertical filmstrip mode and instead causes some UI spacing issues
with the video status label.

Also addressed a typo in "removeVideoWidth" near the area of the
changed logic.
2017-06-13 15:17:55 -05:00
Leonard Kim
da99f3b939 feat(remote-video): convert remote video menu to react
- Create new React Components for RemoteVideoMenu and its
  buttons
- Remove existing menu creation from RemoteVideo
- Refactor RemoteVideo so all function binding happens once in
  the constructor, removing the need to rebind when updating
  the RemoteVideoMenu
- Allow popover to append and remove React Components from itself
- Refactor popover so post-popover creation calls are broken out and
  popover removal behavior is all done in one function.
2017-06-13 14:54:19 -05:00
Leonard Kim
73dd7440d0 fix(remote-video): update remote video menu if it exists
In RemoteVideo, creation of the RemoteVideoMenu (popover) is
skipped if in filmstrip only mode. However, updateRemoteVideoMenu
is called by other components, and that tries to access popover
and will error.

Add a defensive check for now as filmstrip is being rewritten
for react.
2017-06-13 14:54:03 -05:00
Leonard Kim
1a87ee5f93 fix(filmstrip): adjust filmstrip remote videos positioning
- For horizontal mode, remove extra spacing created by borders
  around local video and remote videos.
- For vertical mode, ensure remote videos grow only to fill the
  parent height.
2017-06-13 14:52:43 -05:00
hristoterezov
9d953f18c2 fix(device_selection_popup): On Firefox 2017-06-13 14:08:50 -05:00
bgrozev
be3ed0cc25 Commit from translate.jitsi.org by user bgrozev.: 349 of 349 strings translated (0 fuzzy). 2017-06-13 14:53:07 +00:00
Lyubo Marinov
ee3cd30b59 [RN] Fix call/ring overlay 2017-06-10 18:07:52 -05:00
Lyubo Marinov
ca94563c51 [RN] Coding style
The files styles.js are used (pretty much) on React Native only and each
of them exports 1 name. Export it as default to cut down on source code.
2017-06-10 18:07:51 -05:00
Lyubo Marinov
9591226be6 [R] Fix call/ring overlay
There were regressions in the form of JS errors in Filmstrip introduced
when the call/ring overlay was rewritten in React.
2017-06-10 18:07:51 -05:00
Lyubo Marinov
718de31e04 [RN] Fix video in audion-only mode
When entering audio-only mode, VideoBridge is instructed to stop sending
remote videos. However, if the instruction fails because DataChannels do
not work, for example, then the app continues to display the remote
videos. Even though they're received in the case of such a failure, no
videos are to be displayed in audio-only mode.
2017-06-10 18:07:51 -05:00
Lyubo Marinov
4b2add7aa6 [Android] Allow multiple JitsiMeetViews 2017-06-10 03:34:11 -05:00
Lyubo Marinov
10e5e0fdf5 [iOS] Allow multiple JitsiMeetViews 2017-06-09 19:17:01 -05:00
Lyubo Marinov
5f64ccb97d [RN] Naming 2017-06-09 14:51:31 -05:00
Saúl Ibarra Corretgé
4687c1f465 [RN] Add ability to skip the welcome page
Also expose this in the native SDKs.
2017-06-09 14:10:10 -05:00
Saúl Ibarra Corretgé
79d51bc379 feat(App): remove obsolete config prop
It's obsolete now, since config is handled in Redux. Also add a "defaultUrl"
prop so emdedding applications can select what the default base URL is.
2017-06-09 14:10:10 -05:00
hristoterezov
893d08d614 fix(device_selection_popup): URL 2017-06-09 13:23:32 -05:00
Lyubo Marinov
a5cd118550 [Android] Naming 2017-06-09 10:55:14 -05:00
Saúl Ibarra Corretgé
a266a71999 [RN] Add JitsiMeetViewAbstractListener to Android SDK 2017-06-09 09:57:06 -05:00
Saúl Ibarra Corretgé
be8694f93e [RN] Remove duplicated font on Android
Copy it from the main fonts directory instead.
2017-06-09 16:05:27 +02:00
Saúl Ibarra Corretgé
a1a394ad0b doc: update mobile building instructions for iOS 2017-06-09 09:55:40 +02:00
Lyubo Marinov
e5cc8cd32b [RN] locationURL instead of inviteURL
The value of inviteURL is derived from locationURL by removing the hash
and query/search params in order to make it fit for display and/or
public purposes. The Jitsi Meet SDK consumers do not fall into that
category and our intention is to provide them with the URL they used
with JitsiMeetView.openURL(URL) anyway.

Also rewrites to remove repetition. I'm not saying the new source code
is better really but at least I got to examine it and comment on some of
its weaknesses.
2017-06-09 00:03:23 -05:00
Lyubo Marinov
01b397faef Fixes a jsdoc/require-description-complete-sentence warning 2017-06-09 00:03:23 -05:00
Lyubo Marinov
90466183d6 [RN] Consistency in Jitsi Meet SDK for Android 2017-06-09 00:03:23 -05:00
Saúl Ibarra Corretgé
84463d8cf0 [RN] Add workaround for loading different URLs on Android
Changing the props from native (Java) code was only added in 0.45, so add a
workaround until we get to updating our React Native dependency.
2017-06-09 00:03:23 -05:00
Saúl Ibarra Corretgé
a075f24000 [RN] Add conference events to native SDKs
The current implementation doesn't use the API and Transport modules. This is
due to the fact that they are too tied to APP at the moment, which is web only.

Once API is refactored and moved into the Redux store this will be adjusted,
though it's unlikely that the lowest level React Native module (ExternalAPI)
changes drastically.

This commit also introduces a stopgap limitation of only allowing a single
instance for JitsiMeetView objects on both Android and iOS. React Native doesn't
really play well with having multiple instances of the same modules on the same
bridge, since they behave a bit like singletons. Even if we were to use multiple
bridges, some features depend on system-level global state, such as the
AVAudioSession mode or Android's immersive mode. Further attempts will be made
at lifting this limitation in the future, though.
2017-06-09 00:03:23 -05:00
Saúl Ibarra Corretgé
ddea60efe9 [RN] Add initial Jitsi Meet SDK for Android
Dames en heren, welcome to Jitsi Meet SDK for Android, the Jitsi Meet library
for Android.

The Jitsi Meet SDK encapsulates React Native and all the dependencies Jitsi
Meet has so other aopplications can integrate it easily.

Unlike iOS, creating "fat" libraries is not allways (if at all) possible on
Android, however, effort was put into making the integration as easy as
possible.

While React Native can be embedded in native applications, I don't think it was
designed to be embedded as part of an Android library, hidden away from the
application using it. This surfaced as a number of issues which had to be
addressed specifically due to our use-case:

- Activity lifecycle methods must be linked with the React Native engine, so the
  library provides wrapper methods.
- Custom fonts have to be manually added as assets, since the provided gradle
  script doesn't work properly in a library target.
- The RN packager has to be manually triggered since the gradle script will no
  longer do it for us.

At this stage, the Jitsi Meet application is just a small single activity
application which uses the Jitsi Meet SDK to create a single activity which
represents the entire application. Events and external conference handling are
forthcoming.

PS: Yours truly would like to add that it was a lot more fun to work on the iOS
side of things.
2017-06-09 00:03:23 -05:00
hristoterezov
5a14d1ed6c fix(deviceselectionpopup): the name and position of device selection button for film strip only mode 2017-06-08 21:46:58 -05:00
Leonard Kim
9837181d5d fix(popover): z-index should be greater than toasts
Currently, the JitsiPopover z-index will cause it to display below
any toast notifications so this changes modifies the z-index
values so JitsiPopover is higher than the notification toasts.
2017-06-08 09:37:40 -05:00
Saúl Ibarra Corretgé
f6ccacb7df [RN] Fix regression handling ToolbarButton onPress
Introduced in
96e83989a5
as part of a refactor + feature.
2017-06-08 09:36:58 -05:00
Saúl Ibarra Corretgé
a0054ada08 [RN] Simplify signing embedded iOS frameworks 2017-06-08 01:13:12 -05:00
Lyubo Marinov
2251a17f96 [RN] Consistency in Jitsi Meet SDK for iOS
1. Aligns the project structure of Jitsi Meet SDK for iOS with that for
   Android for better comprehension.

2. The command `react-native run-ios` uses the last Xcode project or
   workspace in the list of these sorted in alphabetical order. Which
   limits our freedom in naming. Thus having only an Xcode project in
   the root directory of the iOS project structure gives us back the
   freedom in naming.

3. Allows the Podspec to work for the app project in addition to the sdk
   project because we need Crashlytics in the app which is integrated
   via Cocoapods as well.

4. Further removes references to JitsiKit in the source code for the
   sake of consistent naming.
2017-06-08 01:13:12 -05:00
Saúl Ibarra Corretgé
b1100a9c7a [RN] Add initial Jitsi Meet SDK for iOS
Ladies and gentlemen, allow me to introduce you to Jitsi Meet SDK for iOS, the
mobile SDK which powers Jitsi Meet.

The goal is to encapsulate the entire React Native app into a framework / SDK
and offer an API for native (ObjC or Swift) applications to embed the Jitsi
conferencing experience.

While React Native can be embedded in native applications, I don't think it was
designed to be embedded as part of a framework, hidden away from the application
using it. This surfaced as a number of issues which had to be addressed
specifically due to our use-case:

- Universal / deep linking needed to be wrapped to avoid the embedding app from
  linking with RN.
- The bundle URL had to be manually constructed, since RN considers that all
  resources are in the main bundle, but in case of a framework that is not the
  case.
- Custom fonts had to be manually loaded, since UIAppFonts doesn't work on the
  framework's Info.plist file.
- The RN packager has to be manually triggered since the React project will no
  longer do it for us.
- Custom App Transport Security rules were added since the builtin way to do it
  modifies the framework's Info.plist, which is useless in this case.

At this stage, the Jitsi Meet application is just a small single view
application which uses the Jitsi Meet SDK to create a single view which
represents the entire application. Events and external conference handling are
forthcoming.
2017-06-08 00:50:00 -05:00
damencho
8e3dfcf0d0 Handles Enter key to submit dialogs.
If there is no focused node inside the dialog we focus any of the available buttons, submit button is first.
2017-06-07 17:06:48 -05:00
damencho
bf7415e6b5 Updates field-text dependency version and add autofocus prop. 2017-06-07 17:06:48 -05:00
Lyubo Marinov
6072978454 [RN] Fix the bundling broken by unnecessary dependencies 2017-06-07 16:19:57 -05:00
Lyubo Marinov
5a74080839 Comply w/ coding style 2017-06-07 13:27:45 -05:00
Lyubo Marinov
89862cbea9 [RN] Fix exports/imports of nonexistent files 2017-06-07 13:27:44 -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
Leonard Kim
2e08815644 fix(video): use onplaying to ensure video height and width are set
When using onplay in firefox, the event fires before data is flowing,
which can cause videoHeight and videoWidth to be 0 during resizing.
By using onplaying, there is some assurance data is being received,
so videoHeight and videoWidth should be set.
2017-06-07 10:44:05 -05:00
hristoterezov
96e83989a5 feat(device_selection): Implement popup 2017-06-07 09:23:40 -05:00
paweldomas
2c002c875d fix(SmallVideo): remove invalid character
Removes ' character which should not be there.
2017-06-06 11:15:39 -05:00
paweldomas
e38dd0e9d3 ref(LargeVideoManager): remove unused method
'_isConnectionActive' is not used anymore
2017-06-06 11:13:02 -05:00
paweldomas
a2a2a583de doc(LargeVideoManager): invalid default
The default for 'show' argument of 'showRemoteConnectionMessage' is
undefined (unspecified).
2017-06-06 11:13:02 -05:00
paweldomas
a3ba28f507 ref(LargeVideoManager): simplify
Simplify 'updateParticipantConnStatusIndication' by getting rid of
'showMessage' argument.
2017-06-06 11:13:02 -05:00
paweldomas
6865b03338 fix(RemoteVideo): broken grey avatar
Also moves the logic about participant connection status from SmallVideo
to RemoteVideo, because it doesn't make sense for local videos.
2017-06-06 11:13:02 -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
paweldomas
5c5864e94a font(jitsi): add ninja icon 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
409255f056 [React] Cross-platform Components
Introduce certain React Components which may be used to write
cross-platform source code such as Audio like Web's audio, Container
like Web's div, Text like Web's p, etc.
2017-06-06 00:11:39 -05:00
virtuacoplenny
d1ea29beeb fix(large-video): ensure switch to local video when all others leave (#1607)
* fix(large-video): ensure switch to local video when all others leave

This handles the case where User A and B are in a call and B has
no audio or video. Then B leaves. User A would see User B left
on large video. Instead, User A should see self view on large.

* squash: always update large video if it is empty

* squash: add largeVideo check for filmstrip only mode
2017-06-05 18:47:26 -05:00
yanas
a59e691ba8 Removes redux compose utility function 2017-06-05 13:31:38 -05:00
Lyubo Marinov
a4a13bed84 Invite URL w/o (hash & query/search) params 2017-06-01 21:04:31 -05:00
Lyubo Marinov
ec454d1da0 Move ConferenceUrl.inviteURL into React and redux 2017-06-01 21:04:31 -05:00
Lyubo Marinov
e2afb4c7e7 Move ConferenceUrl.reload into React and redux 2017-06-01 21:04:31 -05:00
Lyubo Marinov
87b488a12b Comply w/ coding style 2017-06-01 21:04:31 -05:00
Lyubo Marinov
4dc658c270 Fix 'Missing JSDoc comment  require-jsdoc' 2017-06-01 21:01:50 -05:00
jitsi-pootle
a5d8b4a933 New files added from translate.jitsi.org based on templates 2017-06-01 01:19:43 +00:00
yanas
1d34a50d2f Fix raise hand toggled state 2017-05-31 15:31:06 -05:00
yanas
d1737745c2 Fix raise hand toggled state 2017-05-31 07:50:18 -05:00
Lyubo Marinov
ec2e6525ac Fix jsdocs 2017-05-31 00:53:53 -05:00
Lyubo Marinov
8882d9c3b6 Upgrade NPM dependencies/packages 2017-05-31 00:53:53 -05:00
Aaron van Meerten
6d1a018864 include local.html file meant to define local analytics properties (#1612)
* include local.html file meant to define local analytics properties
include all specified local analytics properties in analytics events

* use new variable name jitsiDeploymentInfo to represent more general use as local deployment information collection
2017-05-30 13:37:43 -05:00
Lyubo Marinov
320e67baa1 Fix the initialization of the (external) API
The counterpart of the external API in the Jitsi Meet Web app uses the
search URL param jwt to heuristically detect that the Web app is very
likely embedded (as an iframe) and, consequently, needs to forcefully
enable itself. It was looking at whether there was a JSON Web Token
(JWT) but that logic got broken when the JWT support was rewritten
because the check started happening before the search URL param jwt was
parsed.
2017-05-30 09:38:18 -05:00
Lyubo Marinov
69f8cf7836 Fix the disabling of the Welcome page 2017-05-26 19:23:23 -05:00
Saúl Ibarra Corretgé
5304660e14 [RN] Polyfill Symbol 2017-05-26 16:37:22 -05:00
Leonard Kim
538da92eae fix(large-video): attempt to update large video on all connection updates
It is possible for a connection update to come during a large video update,
between its promises, which would result in the update NOT triggering another
large video update because an update is in progress. This can cause a state
where a connection status overlay is displayed over a video in a state that
does not match the actual video state, like the restoring overlay displaying
on active video.
2017-05-26 15:31:34 -05:00
paweldomas
4b487e3c89 config: enable P2P by default 2017-05-26 12:59:24 -05:00
damencho
70e1bfc6b8 Enables vertical filmstrip by default. 2017-05-26 12:58:52 -05:00
Aaron van Meerten
d65295db8b Merge pull request #1611 from jitsi/fix-token-pubkey
Fixes using public key to verify tokens.
Tested in production.
2017-05-25 17:29:06 -05:00
damencho
34be638fca Fixes using public key to verify tokens. 2017-05-25 16:45:08 -05:00
damencho
2a0973a897 Fixes chat when on join we receive messages.
Fixes a TypeError: Cannot set property 'innerHTML' of undefined
                    at o (Chat.js:61)
                    at Object.updateChatConversation (Chat.js:271)
that is thrown when joining a conference with messages already set to the chat. The error used to remove a strophe handler and chat was not working at all for those seeing the error.
2017-05-25 15:22:49 -05:00
Leonard Kim
42b51e3c5c fix(1-on-1): remove torture test workaround, add new tests 2017-05-25 15:15:52 -05:00
Leonard Kim
ff0e392ca8 fix(device-selection): Update parameters from audio level change callback 2017-05-25 13:28:27 -05:00
virtuacoplenny
1da95d2e37 fix(large-video): trigger update after timeout for 1-on-1 calls (#1599)
* fix(large-video): trigger update after timeout for 1-on-1 calls

Currently no video switch happens if a user joins audio and video
muted. For example, User A is in a call and User B joins with no
mic and camera. User A will keep seeing local video on large video.
The fix is to set a timeout, of a somewhat arbitrary 3 seconds, to
show User B on large video.

* SQUASH: wrap videoElement access in if

* SQUASH: split out remoteVideoActive logic
2017-05-25 11:50:52 -05:00
Lyubo Marinov
b7c4ebba84 Web Filmstrip & LargeVideo React Components
We've had Filmstrip & LargeVideo React Components on mobile/React Native
from the start. We didn't have them on Web (because the rewrite in React
is not complete yet). However, that led to differences in the React
Component Conference on Web and mobile. In an effort to get closer to
merging the React Component Conference on Web and mobile, introduce the
React Components Filmstrip & LargeVideo on Web even if a minimal
render-only form at this time.
2017-05-25 11:44:35 -05:00
Lyubo Marinov
66ababc6c8 Comply w/ codying style: naming, formatting, etc. 2017-05-25 10:56:08 -05:00
yanas
e128c03f56 Merge pull request #1602 from virtuacoplenny/lenny/video-label-hover
fix(video-label): Show darker background on hover
2017-05-24 20:58:49 -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
346980308b fix(video-label): Show darker background on hover 2017-05-24 15:32:58 -07:00
yanas
abd30e0269 Merge pull request #1601 from jitsi/disable-speakerstats-filmstrip-only
Disables speaker stats in filmStrip only mode.
2017-05-24 16:50:39 -05:00
yanas
cbe395f463 Merge pull request #1600 from virtuacoplenny/lenny/filmstrip-1-on-1
fix(filmstrip-only): hide video label, always show remote thumbnails
2017-05-24 16:14:04 -05:00
damencho
59d4523d72 Disables speaker stats in filmStrip only mode. 2017-05-24 16:10:42 -05:00
Leonard Kim
27f968e753 fix(filmstrip-only): hide video label, always show remote thumbnails 2017-05-24 13:23:21 -07:00
yanas
a2ebc169e4 Merge pull request #1598 from virtuacoplenny/lenny/status-label-z
fix(video-label): modify z-index and cursor
2017-05-24 14:52:11 -05:00
yanas
d10cc66036 Merge pull request #1595 from virtuacoplenny/lenny/move-to-corner
fix(vertical-filmstrip): do not move recording label if not in the co…
2017-05-24 14:21:06 -05:00
Leonard Kim
3d0226ccd0 fix(video-label): modify z-index and cursor
- Change z-index so any tooltips that display over the label,
  particularly in vertical filmstrip mode, actually hide the label.
- Change the cursor to be a pointer so the label looks clickable.
- Remove unused audio-only-label styling.
2017-05-24 10:33:26 -07:00
Leonard Kim
acb4d12928 fix(vertical-filmstrip): do not move recording label if not in the corner 2017-05-23 17:14:48 -07:00
yanas
600f7bcf7b Merge pull request #1594 from jitsi/fix-scrollbars
Re-styles scrollbars
2017-05-23 16:26:29 -05:00
yanas
1ff89c5a1c Merge pull request #1587 from virtuacoplenny/lenny/vertical-filmstrip
vertical filmstrip and 1-on-1 mode
2017-05-23 16:23:11 -05:00
Leonard Kim
56b12bd969 fix(vertical-filmstrip): move video status labels back to top right
The video status labels, which include recording and hd status,
have been moved back to the top left while in vertical filmstrip
mode. The following had to be done:
- Remove styling to move the labels to the bottom left
- For VideoStatusLabel, move filmstrip remote video count, toggle
  state, and 1:1 state into redux.
- Use middleware to emit out to the Recording label when the
  filmstrip changes.
- Create an empty Filmstrip file for web and identify the existing
  Filmstrip component as native.
2017-05-23 13:28:27 -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
Leonard Kim
aabe641047 feat(vertical-filmstrip): Initial implementation
- Add a class to the body when in vertical filmstrip mode
- Override styles as necessary to support the mode
- Add an option to make tooltips display from the left
- Move the HD Label to the bottom left
- Move the remote video menu to the bottom left, move the mute
  icons to the bottom right
- Scale the local video's height and width to fit the filmstrip
2017-05-23 13:28:27 -07:00
yanas
dc5a29a976 Re-styles scrollbars 2017-05-23 15:17:46 -05:00
Leonard Kim
82ecfac4ee fix(filmstrip): Separate remote videos and local video
The 1:1 call UI and vertical filmstrip act on remote videos
while leaving local video alone. To facilitate acting only on
remote videos, place remote videos into their own container element.
2017-05-23 09:07:41 -07:00
hristoterezov
23fea490aa Merge pull request #1585 from jitsi/dial-out-ui
Adds dial-out UI.
2017-05-23 10:29:23 -05:00
yanas
1d60300016 Merge pull request #1592 from virtuacoplenny/lenny/slider-width
fix(volume-slider): modify positioning so slider fits popup width
2017-05-23 10:15:36 -05:00
yanas
6536f82559 fix(Dialog.web.js): Fixes okDisabled state not taken into account 2017-05-23 09:00:40 -05:00
yanas
4464a11314 Changes telephone icon 2017-05-23 09:00:40 -05:00
yanas
2855ea1500 Adds dial-out UI. 2017-05-23 09:00:40 -05:00
Leonard Kim
258dc594dd fix(volume-slider): modify positioning so slider fits popup width 2017-05-22 14:16:06 -07:00
Leonard Kim
a1476c68f1 fix(audio-only): remove button from toolbar and set label cursor
Audio only mode will be toggleable only from the VideoStatusLabel,
so remove AudioOnlyButton from the toolbar and delete the component
itself. As a result of the button being removed, a truthy check in
VideoStatusLabel was also removed to ensure it will display as it
is now the only way to toggle audio only mode. Also set the cursor
on VideoStatusLabel to always be default, so it can never show the
text cursor.
2017-05-22 14:46:05 -05:00
damencho
bf163d221c Adds download source archive link to the README. 2017-05-22 11:28:04 -05:00
yanas
7900b9c294 Merge pull request #1577 from virtuacoplenny/lenny/invite-conference-number
feat(invite): Add conference id to dial-in numbers display
2017-05-22 11:08:18 -05:00
jitsi-pootle
6a17d50423 New files added from translate.jitsi.org based on templates 2017-05-22 14:54:57 +00:00
Leonard Kim
9e7f8d0e16 SQUASH: use redux to get config 2017-05-19 16:07:13 -07:00
Leonard Kim
3a99ef512e SQUASH: add comment to styling and alpha order 2017-05-19 15:41:42 -07:00
Leonard Kim
a14886031f SQUASH: changes based on feedback: rename, handle error 2017-05-19 15:35:47 -07:00
Дамян Минков
ec881e0fd0 Merge pull request #1580 from jitsi/fix-isguest-typeerror
Fix TypeError: Cannot read property 'isGuest' of undefined
2017-05-18 13:10:28 -05:00
Leonard Kim
80989147ad feat(video-label): Add dropdown for toggling audio only
Add a menu that displays when hovering over VideoStatusLabel. The menu's
display is controlled by CSS. As the existing AudioOnlyLabel no longer needs
needs its own tooltip, it has been removed and label display logic has been
moved into VideoStatusLabel.
2017-05-18 13:09:34 -05:00
Lyubo Marinov
3c31a60b32 Fix TypeError: Cannot read property 'isGuest' of undefined 2017-05-18 11:53:45 -05:00
Lyubo Marinov
db59b45076 Upgrade NPM dependencies/packages 2017-05-17 16:41:52 -05:00
Leonard Kim
0f0ff6788c fix(config): Bring back minHDHeight 2017-05-17 16:13:16 -05:00
Leonard Kim
47c07c2e76 feat(invite): Add conference id to dial-in numbers display
DialInNumbersForm has been modified to display a conference id to be used for
dialing into the conference. The changes include:
- Requesting the conference id and adding the conference id to the redux store
- Displaying the conference id in DialInNumbersForm
- Modifying the copy behavior to support copying the new message to clipboard
- DialInNumbersForm does not display until all ajax requests have completed
  successfully. This eliminates the need for the REQUESTING state.
2017-05-17 10:25:07 -07:00
Leonard Kim
896dcde2b2 fix(video-label): Listen to resize events on video elements when possible 2017-05-17 11:54:22 -05:00
Leonard Kim
a88409bbfa fix(video-label): Display based on video dimensions in LargeVideoManager
In its current implementation, the VideoStatusLabel shows HD based on peer
connection stats. These stats will be available on temasys browsers soon but
will remain unavailable on Firefox, which does not collect height/width stats.
To support VideoStatusLabel showing cross-browser, move the high-definition
detection out of stat sniffing and instead check the video element itself using
an interval in LargeVideoManager. (An interval was used because the temasys
video object does not support the onresize event.) Also, add a cleanup path from
conference.web to LargeVideoManager to remove the interval.
2017-05-17 11:54:22 -05:00
damencho
b8189a31ad Updates quick-install with mention of jvb behind nat and link to config. 2017-05-16 16:26:47 -05:00
damencho
e90d09a6d9 Updates recording instructions in manual install doc. 2017-05-16 16:19:31 -05:00
damencho
9fb49cb59b Updates default config, avoids storing muc data on prosody restart. 2017-05-16 16:04:26 -05:00
Любомир Маринов
77ab05823d Merge pull request #1576 from jitsi/remote_control_enabled
fix(remotecontrol): Controller enabled property
2017-05-16 12:49:17 -05:00
hristoterezov
28ff188f96 fix(remotecontrol): Controller enabled property 2017-05-16 12:45:39 -05:00
Saúl Ibarra Corretgé
bac191f96c [RN] Rename jitsi-meet-react to jitsi-meet 2017-05-16 12:38:36 -05:00
yanas
e1a9487896 Merge pull request #1562 from virtuacoplenny/lenny/filmstrip-disable-hiding
fix(filmstrip): Disable keyboard shortcut for hiding videos
2017-05-16 11:59:44 -05:00
damencho
9e728e4b25 Fixes crashing jwt util for anonymous domains.
Room name verification crashes when we have a configured anonymousdomain as it doesn't have any token extracted data. It is safe to skip this check as room creation is verified by jicofo and we have the option restrict_room_creation to admin users.
Removes obsolete print when updating jitsi-meet-tokens.
2017-05-16 08:21:46 -05:00
bgrozev
06d2c9fb7b Merge pull request #1573 from saghul/enable-ff-ds
fix(screen-sharing) Enable it by default on Firefox
2017-05-15 15:14:49 -05:00
Дамян Минков
63c862d925 Updates docs report issue part. 2017-05-15 10:57:31 -05:00
Saúl Ibarra Corretgé
a96a70869d fix(screen-sharing) Enable it by default on Firefox
Starting with Firefox 51 the extension is no longer mandatory, so make sure the
feature is not desabled by default.
2017-05-15 12:15:00 +01:00
damencho
ede5be119f Skips changing prosody config on upgrading jitsi-meet-tokens package. 2017-05-12 16:12:15 -05:00
Saúl Ibarra Corretgé
b7c57d306a Merge pull request #1565 from virtuacoplenny/lenny/defensive-classnames
fix(toolbox): Defensively check classNames when mapping button attrib…
2017-05-12 10:10:04 +02:00
Leonard Kim
816eef1702 fix(toolbox): Defensively check classNames when mapping button attributes 2017-05-11 14:35:33 -07:00
Leonard Kim
92eeba5392 fix(filmstrip): Disable keyboard shortcut for hiding videos 2017-05-10 14:04:09 -07:00
Lyubo Marinov
2f3706bd37 [RN] Simplify
There were getDomain, setDomain, SET_DOMAIN, setRoomURL, SET_ROOM_URL
which together were repeating one and the same information and in the
case of the 'room URL' abstraction was not 100% accurate because it
would exist even when there was no room. Replace them all with a
'location URL' abstraction which exists with or without a room.

Then the 'room URL' abstraction was not used in (mobile) feature
share-room. Use the 'location URL' there now.

Finally, removes source code duplication in supporting the Web
application context root.
2017-05-09 16:31:21 -05:00
Lyubo Marinov
e6f6884c36 [RN] Support JSON Web Token (JWT)
Make 'Add jwt module to react' work on mobile.
2017-05-09 00:21:14 -05:00
Ilya Daynatovich
ab5c2e9ded Add jwt module to react 2017-05-09 00:21:14 -05:00
Ilya Daynatovich
4f72225372 Add set room url action 2017-05-09 00:21:13 -05:00
Ilya Daynatovich
3af0976a43 Beautify URLProcessor 2017-05-09 00:21:13 -05:00
Ilya Daynatovich
96b1f0ca74 Create config util 2017-05-09 00:21:13 -05:00
damencho
32ea2161eb Hides sip dialout button if configured to show it for non guest users. 2017-05-08 15:34:32 -05:00
damencho
c8ab1b9892 Catches promise errors, returned when error is received after dial cmd. 2017-05-08 15:34:32 -05:00
damencho
61e637a639 Adds prosody module to filter incoming rayo iqs based on jwt token.
Returns forbidden error message if module is enabled and the user sending a dialout rayo command is not authenticated through jwt token or is not allowed to enter the room name from the rayo iq.
2017-05-08 15:34:32 -05:00
damencho
7d94d3fd1a Updates room size API to work with multiple domains.
Checks for a parameter named subdomain and if it exists, adds it to the roomname as used in multiple domain mode ([subdomain]roomname@conference.example.com).
Moves muc_size module to per-host module and adds token verification.
2017-05-08 11:23:13 -05:00
damencho
88a58a057e Removes not needed parameter token in process_and_verify_token. 2017-05-08 11:23:13 -05:00
damencho
4bb51516bb Adds domain name verification and multidomain support.
Adds option to enable/disable domain checking, disabled by default. Domain verification for multiple domains depends on new option muc_mapper_domain_base.
2017-05-08 11:23:13 -05:00
damencho
0805b9e99e Removes disableRoomNameConstraints option.
This option is useless, as if we do not need to verify room name, we just disable the mod_token_verification module.
2017-05-08 11:23:13 -05:00
damencho
82b27b45fe Moves token related code into util so it can be reused. 2017-05-08 11:23:13 -05:00
yanas
166fb1d13f Merge pull request #1509 from virtuacoplenny/lenny/web-audio-only
Audio only mode for web
2017-05-05 11:52:15 -05:00
Leonard Kim
ef9f145cb5 fix(video-layout): always honor local video changes
During the implementation of starting as video muted, a check
was put in place to update the local thumbnail view container's
known local track only if the track was not muted. This can
cause the container to become desynced with the current local
track.(Ideally in the future all state would be in redux so this
manual syncing would not be needed.) Removing the if-muted
check seems to cause no side-effects and makes implementation of
device-switch-while-audio-only a lot simpler because new tracks
can be muted and used immediately.
2017-05-05 09:27:59 -07:00
Leonard Kim
929bc8b8b9 fix(device-selection): do not reuse tracks in previews
Device selection has live previews that reuse the current local
audio and video tracks for the sake of internet explorer. This
means when the local video was muted, device selection would
show a muted message. It is preferred to show a live preview
even when muted.

The changes include:
- Passing device ids into DeviceSelectionDialog, not tracks.
- Setting default selected devices to use for live previews.
- Removing all checks in DeviceSelectionDialog involving local tracks.
- Catching and displaying errors when creating a live video preview.
2017-05-05 09:27:59 -07:00
Leonard Kim
d24d5d95dd fix(audio-only): combine video status labels
Move the HD label into the newly renamed VideoStatusLabel
component. That way it cannot be possible for the audio only
label and the HD label to display simultaneously.
2017-05-05 09:27:59 -07:00
Saúl Ibarra Corretgé
9ba3a1c4ff feat(conference): add audio only mode
Audio only mode can be used to save bandwidth. In this mode local video is muted
and last N is set to 0, thus disabling all remote video.

When this mode is enabled avatars are shown.
2017-05-05 09:27:59 -07:00
yanas
1bcdbd1d96 Merge pull request #1552 from virtuacoplenny/lenny/ff-avatar-inlay
fix(filmstrip): Set avatar container height within inlay
2017-05-05 11:25:08 -05:00
Leonard Kim
8ada06cfe3 fix(filmstrip): Set avatar container height within inlay
In the filmstrip inlay, the avatar container holds the avatar
image. The image is set to 100% height, so it displays entirely
in the container. However, this does not adjust the horizontal
space created by the image in firefox, leaving whitespace to the
right of the avatar. The fix is to set the container height to
100% so that all its content will fit inside, automatically
adjusting the space created by the image width.
2017-05-04 11:46:10 -07:00
yanas
bf0be99366 Merge pull request #1551 from jitsi/smileys-fix
Fixes #1549, toggles smileys menu.
2017-05-04 11:28:27 -05:00
damencho
653f1dae4c Fixes #1549, toggles smileys menu. 2017-05-04 11:19:46 -05:00
hristoterezov
d91340166d Remote control - display the authorization dialog in meet (#1541)
* fix(react/participant): store display name in redux

* feat(remotecontrol): Add option to display the authorization dialog in meet

* feat(remotecontrol): Enable ESLint and Flow
2017-05-03 18:57:52 -05:00
Дамян Минков
d694e8df86 Updates README, removing "Discuss" section. 2017-05-03 13:00:46 -05:00
Lyubo Marinov
75a486ff96 Merge branch 'abstract_transport2'
Additionally, attempt to move closer to the coding style adopted by
react/.
2017-05-02 17:40:16 -05:00
Leonard Kim
48626ee71b fix(toolbox): move default toolbox buttons logic to web only
toolbox/functions has functions that are specific only to web,
specifically defaultToolbarButtons. This has caused the native
build to attempt to bring in a web dependency which leads to a
build error. The fix for now is splitting web functions from
native functions to resolve the build error.
2017-05-02 12:01:54 -05:00
hristoterezov
b297aa3f3a ref(remotecontrol): Changing the format of the messages 2017-05-02 09:47:07 -05:00
hristoterezov
dfc94ff144 ref(iframe_API): Changing the format of the outgoing messages for API.js 2017-05-01 15:59:18 -05:00
yanas
1ffa7be4e1 Merge pull request #1531 from virtuacoplenny/lenny/invite-phone-numbers
feat(invite): include dial-in numbers in the invite modal
2017-05-01 15:39:38 -05:00
Leonard Kim
d7cccacc12 feat(invite): include dial-in numbers in the invite modal
Create a new React Component for displaying a list of dial-in
numbers. The Component will fetch the numbers from a new
numberRetreviewUrl key/value set in config. If not present in
config, the Component will not be displayed.
2017-05-01 12:47:35 -07:00
hristoterezov
96bde3ff44 fix(trnasport): Names of the arguments for Transport and backend
Now the backends are working with 'message' and Transport is
working with 'request', 'response' and 'event'.
2017-04-28 16:03:36 -05:00
hristoterezov
b49c1c6ba2 fix(transport): Code style issues and enableLegacyFormat param bug
Improves naming.
Fixing typos.
enableLegacyFormat param was working like disableLegacyFormat.
Improves the structure of transport/index.js
2017-04-28 15:24:20 -05:00
Lyubo Marinov
e9dc9c47a9 Coding style
For lack of a better word/phrase, I'm calling all changes coding style.
I'm targeting readability through naming and syntax.
2017-04-28 10:41:08 -05:00
hristoterezov
3e055c1201 ref(external_api): To use transport module 2017-04-28 10:41:08 -05:00
hristoterezov
54388b6a0a ref(remotecontrol): To use transport module instead of API 2017-04-28 10:41:08 -05:00
hristoterezov
0dff35c0db feat(transport): Implement transport module
The transport module will be handling all external app
communication.
2017-04-28 10:41:08 -05:00
yanas
6c676f8d5f Merge pull request #1538 from virtuacoplenny/lenny/device-selection-disabled
fix(device-selection): do not create a dropdown menu if disabled
2017-04-26 17:16:28 -05:00
Leonard Kim
4e95dbf0e5 fix(device-selection): do not create a dropdown menu if disabled
AtlasKit DropdownMenu cannot be disabled, unlike Single Select.
The result is the isDisabled prop was not being honored. The
workaround is returning only the trigger element for the dropdown
and styling it to look like the dropdown is disabled. The text
for disabled device selection was changed along the way to fit
into the trigger.
2017-04-26 14:29:32 -07:00
Guus der Kinderen
00b4176bf8 Non-clickable watermarks without links
Watermarks can be used to link to an external site by configuring a URL.
However, the URL is optional. When it is not set, the watermark should
not be clickable. This prevents users from reloading the room by
clicking on a watermark (caused by an HTML anchor element without an
href).
2017-04-26 10:54:32 -05:00
Lyubo Marinov
7836fd1990 Introduce features/base/logging
The functionality around logging including logging_config.js i.e.
loggingConfig and the other classes and/or functions that initialize
loggers for Jits Meet truly deserves a feature of its own. Start getting
in that direction on both Web and mobile by introducing
features/base/logging and bringing loggingConfig to mobile.
2017-04-23 23:30:53 -05:00
Lyubo Marinov
92e765ea21 Introduce features/base/config
The config object defined by lib-jitsi-meet is not used by
lib-jitsi-meet only, jitsi-meet respects its values as well.
Moreover, jitsi-meet defined classes and/or functions which manipulate
that config object. Consequently, it makes sense to move the config
object and the associated classes and functions in a dedicated feature.
2017-04-23 15:18:41 -05:00
paweldomas
16d9ef5f1c [RN] export RTCIceCandidate
Required for P2P.
2017-04-23 13:54:12 -05:00
Lyubo Marinov
bce1610794 Simplify, comply w/ coding style
Rename setStateProperties and setStateProperty to assign and set,
respectively. Inspired by Object.assign, _.assign, and _.set.
2017-04-22 17:57:08 -05:00
Lyubo Marinov
1f16233afa Upgrade NPM dependencies/packages 2017-04-22 17:27:16 -05:00
yanas
e804548b22 Merge pull request #1529 from virtuacoplenny/lenny/device-overflow-stopgap
fix(device-selection): convert trigger element to a div
2017-04-21 17:05:33 -05:00
yanas
dc994173d7 Merge pull request #1500 from virtuacoplenny/whitelist-user-select
fix: do not apply user-select none to inputs
2017-04-21 13:12:07 -05:00
Leonard Kim
283140d16a fix: do not apply user-select none to inputs
Safari will prevent proper input behavior when user-select none
is applied. It prevents such actions as putting in a room lock
password or setting a room lock password. Other browsers allow
selecting on inputs while user-select is none.
2017-04-21 11:10:47 -07:00
Leonard Kim
03155c63ae fix(device-selection): pass translation key into the translate function 2017-04-21 08:58:34 -07:00
Leonard Kim
17fc28b020 fix(device-selection): convert trigger element to a div
AtlasKit Dropdown was recently updated to support fitting the
width of its container. However, AtlasKit Button, the trigger
element currently used for the dropdowns, does not fit the width
of AtlasKit Dropdown and stll has text overflowing out of its
button when there is an iconBefore prop passed in. Instead of
using AtlasKit Button, use a div and mimic the button look. This
allows the "button" to fit the container width and can display
ellipsized text within itself.
2017-04-20 19:34:02 -07:00
Saúl Ibarra Corretgé
607bef8d68 Merge pull request #1518 from jitsi/fix_removeListeners
fix(external_api): JS error in removeListeners and simplifies dispose
2017-04-20 23:47:15 +02:00
hristoterezov
55f5ceb85a fix(external_api): JS error in removeListeners and simplifies dispose 2017-04-20 15:08:13 -05:00
Saúl Ibarra Corretgé
7be8e3e1e9 Merge pull request #1523 from virtuacoplenny/lenny/mute-overlay-black
fix(device-selection): show black background only when video muted
2017-04-20 15:16:53 +02:00
Lyubo Marinov
55c3f5ddff Comply w/ coding style
@virtuacoplenny, the changes of this commit are not necessarily in
source code that you introduced in
https://github.com/jitsi/jitsi-meet/pull/1499 but I saw violations in
files modified in the PR which I had to read in order to understand the
PR.
2017-04-19 20:56:19 -05:00
Leonard Kim
44b81b20e3 feat: convert invite dialog to react and redux
Converting the invite modal includes the following:
- Creating new react components to display InviteDialog. The
  main parent components are ShareLink and PasswordOverview,
  the later handles displaying lock state and password editing.
  These components do not make use of atlaskit as the component
  for input does not yet support readonly, so for consistency
  within the modal content no atlaskit was used.
- Using redux for keeping and accessing lock state instead of
  RoomLocker.
- Publicly exposing the redux action lockStateChanged for direct
  calling on lock events experienced on the web client.
- Removing Invite, InviteDialogView, and RoomLocker and references
  to them.
- Handling errors that occur when setting a password to preserve
  existing web funtionality.
2017-04-19 20:41:23 -05:00
yanas
4097be1908 Merge pull request #1524 from jitsi/overlay_on_top
fix(overlay): Make the overlays on top of everything
2017-04-19 17:42:02 -05:00
hristoterezov
f6ef727573 fix(overlay): Make the overlays on top of everything 2017-04-19 17:09:22 -05:00
Leonard Kim
1045cb56fe fix(device-selection): show black background only when video muted
On certain modal dimensions, the black background of the video
preview could peek through, making it look like the video has a
black line. The change is to remove the black background from
showing by default and having it only display when the video is
muted. Also, the video preview dimension stylings have been
changed to facilitiate smoother size adjusting with modal size
changes.
2017-04-19 14:51:51 -07:00
Lyubo Marinov
6c0ad4966e [Android] Go back to minSdkVersion 16 2017-04-19 13:55:44 -05:00
Saúl Ibarra Corretgé
5d50792a56 [RN] Make AudioMode more resilient on Android
Some devices may give an error stating that INTERACT_ACROSS_USERS_FULL
permission is neeced. This permission can only be achieved by signing the
application with the same key as the system, which is never going to happen so
deal with it by catching any exceptions setting the mode may cause and failing
as gracefully as we can.

Ref:
http://stackoverflow.com/questions/34172575/audiomanager-setmode-securityexception-on-huawei-android-4
2017-04-19 13:55:44 -05:00
Saúl Ibarra Corretgé
0c16842e0d [RN] Fix full-screen mode when a dialog is opened on Android
When a dialog is opened on Android, full-screen mode is exited but we (the app)
know nothing about this. Make sure we re-enter full-screen mode once a dialog is
closed, if the conditions to be in such mode are still met.
2017-04-19 13:55:44 -05:00
Saúl Ibarra Corretgé
d9538845bc [RN] Set iOS status bar style to light
It will render as white in dark backgrounds. This is what FaceTime does and what
we already do on Android. The problem with the default look (black text) is
noticeable in audio only mode, since the background is dark.
2017-04-19 14:07:20 +02:00
Saúl Ibarra Corretgé
7f1579d96d [RN] Update iOS Xcode project file 2017-04-19 14:06:10 +02:00
yanas
3674694d12 Merge pull request #1514 from virtuacoplenny/lenny/video-preview-mute-string
fix: change string displayed when previewing a muted video input
2017-04-18 16:33:50 -05:00
Leonard Kim
3e518e8040 feat: convert device selection modal to use AtlasKit Dropdown
Instead of using AtlasKit Single-Select, use Dropdown. Dropdown
differs in that an icon can be specified for the trigger element,
whereas Single-Select currently supports icons for all elements,
and Dropdown can show all options incuding the already-selected
option.

This change does introduce the issue of the trigger element not
taking up 100% width of the parent. Supporting such would involve
overriding AtlasKit CSS. The compromise made here was to do a
generic override of max-width so the trigger elements at least
stay within the parent and aligning the trigger elements to the
right.
2017-04-18 16:08:03 -05:00
bgrozev
33c92a31bf Merge pull request #1516 from jitsi/remove_cfg_log_stats
fix(config.js): remove unused 'logStats'
2017-04-18 16:01:49 -05:00
paweldomas
5e2e7902ce fix(config.js): remove unused 'logStats'
This config option is not used anymore.
2017-04-18 14:27:00 -05:00
Leonard Kim
f9585430bb fix: set a default color for text in modal dialogs
Some atlaskit components, such as field-text, inherit text color.
This is a problem with components that are white as they will
inherit $defaultColor, which is a light gray. So instead, for
the atlaskit modal, set a color for all the form content so it
can be inherited instead.
2017-04-18 14:14:26 -05:00
Leonard Kim
19de32e206 feat: support directly setting dialog title text
Dialog does not currently support displaying dynamic strings
for titles, only static strings listed for translation. Accept
a new prop that explicitly states it is for setting the title
and have the web dialog prefer it over the titleKey.
2017-04-18 14:14:26 -05:00
Leonard Kim
a82bc1df64 fix: honor updates of the local user role before conference join
When the prosody setting has muc_allowners, everyone joins as a
moderator. In this case, the local user will not be set as a
moderator in the redux store as the USER_ROLE_CHANGE event will
trigger with the local user id before the redux store has set
the actual local user id--something that happens on
CONFERENCE_JOINED. The fix is to explicitly signal the local user
role has changed to the redux store, which follows the
implementation of pre-existing web logic.
2017-04-18 14:14:04 -05:00
Дамян Минков
c34e841710 Merge pull request #1505 from cmrd-senya/prosody-default-fixup
Explicitly set c2s_require_encryption to false
2017-04-18 13:50:25 -05:00
Leonard Kim
a5c78be52c fix: change string displayed when previewing a muted video input
Device Selection re-uses the local video track for its preview.
When displaying Device Selection while video muted, the text
"muted" displays within the video preview, but some translations
may mistake this to mean audio muted. The text has been changed
to be explicit about video mute. This is a temporary solution;
at some point Device Selection should not re-use the local track
except for IE, the one browser that cannot get multiple tracks
from the same video input.
2017-04-18 10:21:41 -07:00
Дамян Минков
edbbaef26f Merge pull request #1513 from jitsi/fix_change_display_name
fix(conference): Change display name when ChatRoom is not created yet
2017-04-18 11:08:10 -05:00
hristoterezov
bdd133309d fix(conference): Change display name when ChatRoom is not created yet 2017-04-18 10:35:14 -05:00
cmrd Senya
71da05dc96 Explicitly set c2s_require_encryption to false
Jitsi Meet doesn't seem to work with c2s_require_encryption set to true.
c2s_require_encryption is false by default. However it is possible that
in some Prosody configurations it is overriden by a global config to be
true. In that case Jitsi Meet might not work out-of-box. So let's set it
explicitly to be sure it is correct.
2017-04-16 21:19:47 +03:00
Christopher Edsall
f1cbafb097 Spelling in main.json
Fix spelling/grammar for  micConstraintFailedError and cameraConstraintFailedError
2017-04-15 17:41:28 +12:00
Lyubo Marinov
3db557e2c9 Move roomnameGenerator.js out of features/base/util
Over time features/base/util became a bucket where people seemed to dump
just about anything they couldn't think of a better place for. That's a
trend I don't like encouraging. Given that roomnameGenerator.js is
currently used in features/welcome only, I'm fine with moving it there
for the greater good.
2017-04-14 13:14:02 -05:00
Lyubo Marinov
a8b3177e20 Move timeUtil.js out of features/base/util
Because timeUtil.js computes hours, minutes, and seconds out of a single
time/duration using three separate functions, I wouldn't recommend using
it, especially reusing it. That's why I'm even making the functions
private to their current use location.
2017-04-14 13:14:02 -05:00
Lyubo Marinov
8e6f043586 Move interceptComponent.js out of features/base/util
I don't like the file/function name, I'm not excited about the
complexity of the logic it implements, and it's definitely a reusable
piece worthy of being called a utility.
2017-04-14 13:12:47 -05:00
damencho
5163472392 Merge pull request #1502 from BeatC:fix-dialpad-button 2017-04-14 11:46:32 -05:00
damencho
965c811025 Disable dialpad button for now.
Disable the button, till we need it, UI is fixed and it is tested that everything works from jitsi-meet, through lib-jitsi-meet and through jigasi.
2017-04-14 11:44:09 -05:00
Ilya Daynatovich
adc2260b63 Add dialpad icon 2017-04-14 14:21:16 +03:00
yanas
4ef84054dc Merge pull request #1481 from virtuacoplenny/device-picker-settings
fix: open device selection if it is the only available setting
2017-04-13 13:46:08 -05:00
Leonard Kim
7db1c9b8eb fix: open device selection if it is the only available setting
Move logic to open device selection outside of SettingsMenu so
it can be called independently by either SettingsMenu or by
the settings button itself if no other settings but devices will
be displayed.
2017-04-13 11:43:06 -07:00
Lyubo Marinov
ae06a6ce41 Fix Recording regression caused by 'React Toolbar'
Saúl Ibarra Corretgé reported that Recording shows an error dialog
stating "There was an error connecting to your camera". Hristo Terezov
and Yana Stamcheva traced that the problem originates in
da4425b5c0
and, more specifically, is caused by a different order of execution due
to the move of the invocation of the function Recording.init.

The solution is to bring back the execution location of Recording.init.
2017-04-12 14:10:00 -05:00
bgrozev
0316450ee2 Merge pull request #1494 from saghul/doc-browserify
doc: remove mention to Browserify from README
2017-04-12 11:07:06 -05:00
Saúl Ibarra Corretgé
281305147b doc: remove mention to Browserify from README 2017-04-12 18:01:58 +02:00
Saúl Ibarra Corretgé
ef41e32af5 deps: fix ordering in package.json 2017-04-12 16:31:07 +02:00
Saúl Ibarra Corretgé
4ef8172f8d Merge pull request #1487 from jitsi/p2p_callstats
CallStats log level 'info'
2017-04-12 10:48:43 +02:00
Lyubo Marinov
5106f9f958 Process do_external_connect.js through webpack 2017-04-11 18:29:18 -05:00
yanas
2c61d8d94b Merge pull request #1486 from virtuacoplenny/lenny/modal-button-font
fix: set button font-size for modals
2017-04-11 16:18:16 -05:00
Lyubo Marinov
bc8c8c1bb9 Comply w/ coding style 2017-04-11 14:40:03 -05:00
Lyubo Marinov
cbc08eb96d Merge remote-tracking branch 'origin/race_conditions' into api_eslint 2017-04-11 14:31:05 -05:00
Lyubo Marinov
f4de65a647 Comply w/ coding style 2017-04-11 14:30:00 -05:00
hristoterezov
0f42f18100 ref(iframe_api): ESLint support for API.js 2017-04-11 13:31:07 -05:00
paweldomas
a9d9dc6658 log: CallStats log level 'info'
Reduces the log level for the CallStats module to 'info', because recent
changes are adding a lot of debug logs.
2017-04-11 13:11:20 -05:00
Leonard Kim
07cd6a8b88 fix: set button font-size for modals
Atlaskit at times will have localized styling for font-size and
sometimes will not. The button component will inherit its
font-size whereas selectors have localized font-size of 14px. For
consistency, the cancel/submit buttons on the atlaskit modals
will also have 14px. The atlaskit story book examples also use
buttons with 14px font-size.
2017-04-11 10:35:59 -07:00
hristoterezov
ab62690b97 fix(iframe_api): toggle audio/video race condition
If toggle audio or video is executed too early and the local
tracks don't exist we fail to execute the operation. Now we store
the mute state and we are executing it after the tracks are
created
2017-04-11 12:22:04 -05:00
hristoterezov
e7a3ee477d fix(frame_api): toggle SS race condition
If toggle SS is executed too early and lib-jitsi-meet is not yet
initialized toggle SS will fail. Now we are storing the whether
SS is on or off and when lib-jitsi-meet is ready we are starting
SS if needed.
2017-04-11 12:19:28 -05:00
Lyubo Marinov
1ec06f4bf0 React (Native) optimizations/performance
Remove toolbar button and icon style literals from the render method of
Toolbox.native.js.

Additionally, comply w/ coding style.
2017-04-11 12:00:41 -05:00
Saúl Ibarra Corretgé
849f93375c [RN] Use a handset icon for audio-only mode button 2017-04-11 16:15:33 +02:00
Lyubo Marinov
35ba6cef4e React (Native) optimizations/performance 2017-04-10 19:16:35 -05:00
Lyubo Marinov
b0d63dae16 Comply w/ coding style 2017-04-10 19:14:14 -05:00
Saúl Ibarra Corretgé
14d394aed8 [RN] Add workaround for broken border radius on Android
For images < 80 of size forder radius doesn't work properly (it looks like a
square with rounded corders), however, using a duble sized radius does the
trick. Go figure.
2017-04-10 19:13:47 -05:00
Saúl Ibarra Corretgé
50fea44ce2 [RN] Use rounded avatars in the film strip
Also move (native) avatar style to film-strip styles, since  that's where it
applies. This is analogous to how the large-view avatar is styled.
2017-04-10 19:13:40 -05:00
yanas
98004c2328 Merge pull request #1447 from virtuacoplenny/device-picker
New device selection modal
2017-04-10 17:31:59 -05:00
Leonard Kim
eb7dda85a1 feat: replace device selection in settings with button for modal
Cleanup existing logic for displaying and updating device
selection settings in the settings menu. In its place
is a button to open the device selection modal.
2017-04-10 13:30:00 -07:00
Leonard Kim
2f994b1227 feat: new device selection modal with previews
The Device Selection modal consists of:
- DeviceSelection, an overly smart component responsible for
  triggering stream creation and cleanup.
- DeviceSelector for selector elements.
- VideoInputPreview for displaying a video preview.
- AudioInputPreview for displaying a volume meter.
- AudioOutputPreview for a test sound output link.

Store changes include is primarily storing the list of
available devices in redux. Other app state has been left
alone for future refactoring.
2017-04-10 13:30:00 -07:00
Lyubo Marinov
a9bdde193d Approach consistent filmstrip naming
We seemed to be using the names "film strip" and "filmstrip" (and,
consequently, their source code-conscious forms such as film-strip,
FilmStrip, etc.) In order to comply with our coding style which requires
a consistent one name for a given abstraction, choose one name and
rename the uses of the other name.

Wikipedia has a definition of a "filmstrip", I couldn't find a "film
strip". I guess our abstraction can be seen as what's described there.
When I google "film strip", I get results about "filmstrip" at the top.
That's why I chose "filmstrip".

Certain uses of "film strip" such as interfaceConfig.filmStripOnly and
in the external API I left untouched in an attempt to preserve
compatibility.

I wasn't sure whether CSS was tangled in compatibility so I made a
choice and renamed there was well.
2017-04-10 12:59:44 -05:00
yanas
2ffef3bdda Fixes toolbar tooltip positioning 2017-04-10 09:37:10 -05:00
yanas
77b789e26a Implements a filmstrip-only mode for the toolbox 2017-04-10 09:36:25 -05:00
yanas
031f2dfeb8 Fixes showToolbar in filmstrip-only mode and renames some funcs 2017-04-10 09:31:35 -05:00
yanas
cb0eef9edd Fix(SideContainerToggler.js): Check if the component exists on init 2017-04-10 09:31:35 -05:00
yanas
8be85de6ef Changes scss variable name 2017-04-10 09:31:26 -05:00
Lyubo Marinov
9cf7f2b83d Update NPM dependencies/packages 2017-04-09 21:10:39 -05:00
Lyubo Marinov
95667ef98e Revert "[RN] Use rounded avatars in the film strip"
This reverts commit 739298c782.
2017-04-09 12:58:27 -05:00
Lyubo Marinov
b211ce02a8 [RN] Increment short app version from 1.3 to 1.4
Now that Apple have approved build 1.3.204 for release in the App Store,
the short app version needs to be incremented; otherwise, no new builds
can be uploaded to TestFlight and, respectively, for release in the App
Store.
2017-04-09 12:00:58 -05:00
Saúl Ibarra Corretgé
739298c782 [RN] Use rounded avatars in the film strip 2017-04-09 11:55:57 -05:00
Saúl Ibarra Corretgé
a1da6bff1a [RN] Fix loading config from non-default domains
When a conference is to happen in a domain which is not the defaut, its config
is loaded and set. As part of this process, lib-jitsi-meet is disposed. Because
disposing is asynchronous, events happen in this sequence:

- set new config
- dispose lib (which effectively wipes the config)
- init lib

This results in the library to be initialized without the loaded config, which
was lost. This commit fixes that by delaying setting the config and
re-initializing the library until it was disposed.
2017-04-07 14:54:32 -05:00
Saúl Ibarra Corretgé
18a81d7ca0 [RN] Fix passing config options when creating a conference
JitsiConnection.initJitsiConference doesn't automatically pass the global config
options, so grab the config from the Redux store and pass it.
2017-04-07 14:53:52 -05:00
yanas
6f15903019 Merge pull request #1474 from jitsi/fix-profile-sidebar-translation
Fixes profile panel translation.
2017-04-06 16:06:55 -05:00
damencho
a26f7a1292 Fixes profile panel translation.
Strings are not translated when opening the profile side panel on FF. It was that we were creating profile panel html after i18n library had loaded and had translated the rest of the html.
2017-04-06 15:21:04 -05:00
Saúl Ibarra Corretgé
ae8c5287e4 [RN] Remove workaround for video mirroring on iOS
It's now natively supported:
https://github.com/oney/react-native-webrtc/pull/244
2017-04-06 14:17:12 -05:00
Lyubo Marinov
fd10362bef Comply w/ coding style 2017-04-06 12:09:01 -05:00
Lyubo Marinov
3af6cc53d1 Explain _ and UPPER_CASE naming 2017-04-06 11:45:13 -05:00
Saúl Ibarra Corretgé
54bb5f1879 [RN] Add ability to share the URL for a conference 2017-04-06 00:24:26 -05:00
Saúl Ibarra Corretgé
13e3375e8a [RN] Use proximity sensor when in audio-only mode
When the audio-only mode is enabled, turn on the proximity sensor to dim the
screen and disable touch controls when there is an object nearby.
2017-04-05 22:06:30 -05:00
Saúl Ibarra Corretgé
37157dc9e2 [RN] Use _switchCameras provided by lib-jitsi-meet
The functionality to use the react-native-webrtc custom API for fast switching
cameras was moved to JitsiLocalTrack in lib-jitsi-meet. Use that.

Ref: https://github.com/jitsi/lib-jitsi-meet/pull/444
2017-04-05 21:01:00 -05:00
Saúl Ibarra Corretgé
8fe3dce649 [RN] Add audio only mode for conferences
The behavior can be triggered with the toggleAudioOnly action, which is
currently fired with a button.

The following aspects of the conference will change when in audio only mode:

- local video is muted
- last N is set to 0 (effectively muting remote video)
- full-screen mode is exited
- audio mode is set to "audio chat" (default output is the earpiece)
- the wake lock is disengaged

One aspect not handled in this patch is disabling the video mute button while in
audio only mode. The user should not be able to turn back video on in that case.
2017-04-05 15:07:34 -05:00
damencho
4ec4c45a90 Adds a second parameter named domain to muc_size module.
Adds and the default conference. part where the muc module live in default deployments.
2017-04-05 13:41:21 -05:00
Saúl Ibarra Corretgé
19f46ed4f0 Merge pull request #1460 from jitsi/iframe_api_commands
IFrame API improvements
2017-04-05 17:37:02 +02:00
Lyubo Marinov
0e9509ae9b Comply w/ coding style 2017-04-05 04:01:57 -05:00
Saúl Ibarra Corretgé
618dedc58e [RN] Use participant connection status events instead of last N
They better represent if a participant has video available or not. There are
cases when even a participant in the last N set would not have video because it
disconnected momentarily, for example.
2017-04-05 01:41:46 -05:00
Saúl Ibarra Corretgé
623b7a8d6f [RN] Show avatar if a participant is not in last N 2017-04-05 01:21:23 -05:00
Saúl Ibarra Corretgé
7c76f124bf [RN] Use native API for toggling cameras
Use the curstom _switchCamera API provided by react-native-webrtc to toggle the
camera instead of destroying the current track and creating a new one.

_switchCamera is implemented at a low level, so the track perceives no changes,
thus being a lot faster and less involved since the capturer doesn't need to be
destroyed and re-created.

In addition, don't mirror the video for the back camera.

Ref: https://github.com/oney/react-native-webrtc/pull/235
2017-04-05 00:21:35 -05:00
Saúl Ibarra Corretgé
f5973e0eee [RN] Fix toggling camera
When a new local video track is created an associated video capturer is created
for it. The cause for the freezes seems to be creating mutliple tracks (which
come with a video capturer each). Fix this by first disposing of the previous
video track before creating the new one.

Ref:
https://github.com/oney/react-native-webrtc/issues/209#issuecomment-281482869
2017-04-05 00:20:17 -05:00
Lyubo Marinov
32634356a6 Simplify naming 2017-04-05 00:20:17 -05:00
Lyubo Marinov
6d0a07a4cd Remove unnecessary source code
Lib-jitsi-meet does not really implement isScreenSharing. Besides,
getCameraFacingMode will already make sure that the video track does not
represent a desktop stream.
2017-04-05 00:20:17 -05:00
damencho
e0b829f92f Revert "Adds a second parameter named domain to muc_size module."
This reverts commit e2e04e3f16.
2017-04-04 18:45:58 -05:00
Lyubo Marinov
684572bd05 Comply w/ coding style 2017-04-04 17:52:06 -05:00
hristoterezov
334eb5d423 feat(iframe_api): Add more ESLint rules 2017-04-04 17:20:08 -05:00
Ilya Daynatovich
bcbdaaa6ea Fix interface_config.js/interfaceConfig overriding
It got broken while rewriting the Web toolbar in React Toolbox. There is
a problem with the toolbars and how we construct the intialState of the
buttons. The _getInitialState() in the toolbox reducer gets the list of
buttons from interfaceConfig, but in fact interfaceConfig is meant to be
overriden in several very important cases. One of the cases being the
external API, which we use in several projects in production.
2017-04-04 17:00:39 -05:00
Leonard Kim
986939e501 deps: re-add babel-polyfill as a dependency
babel does not modify existing builtins by default. That means
some newer methods, such as Array.prototype.includes, may not
be available unless babel-polyfill is used.
2017-04-04 16:54:59 -05:00
hristoterezov
d416fd8c0f ref(iframe_api): Use EventEmitter 2017-04-04 16:45:47 -05:00
hristoterezov
78119df2db ref(iframe_api): Use ES6 2017-04-04 16:45:47 -05:00
damencho
e2e04e3f16 Adds a second parameter named domain to muc_size module. 2017-04-04 15:15:18 -05:00
Lyubo Marinov
d37468975c Fix ESLint warnings
JSDoc comments didn't follow the ESLint rule for properly formatted
sentences.

BTW, I'm not blind to the fact that PasswordRequiredPrompt and
RoomLockPrompt participated in a birthing of source code through
copy+paste. (If we do not copy+paste, we will not have to fix one and
the same source code such as comments  multiple times.)
2017-04-04 13:47:35 -05:00
damencho
589f77ef0e Adds prosody plugin that query existing rooms for information.
Queries room for their size or room particiapnt's information. Depends on luarocks net-url module.
2017-04-04 13:27:31 -05:00
Lyubo Marinov
1e2d88cd5d React Toolbox 2017-04-03 13:29:33 -05:00
Ilya Daynatovich
da4425b5c0 React Toolbar 2017-04-03 13:05:21 -05:00
Дамян Минков
0d7cb63978 Merge pull request #1459 from jitsi/move_p2p
fix: P2P address indication
2017-04-03 11:55:21 -05:00
Дамян Минков
2248560699 Uses new peer connection statuses to check and show different user msgs. (#1441)
* Uses new peer connection statuses to check and show different user msgs.

Checks for interrupted state of peer connection and shows appropriate messages. In case of inactive or restoring state a message is show to user that video was stopped on purpose. Removes some unused parameters from the event handlers about peer connection status change.

* Removes isParticipantConnectionActive.
2017-04-03 11:53:04 -05:00
yanas
3daae94bca Merge pull request #1379 from jitsi/base-react-dialogs-2
Password required dialog (web&native) and native room lock using basic react dialogs.
2017-04-03 10:52:33 -05:00
paweldomas
7299b76faf fix: P2P address indication
Moves the P2P indication next to the remote IP address
and rewords it to "(p2p)".
2017-04-03 10:04:53 -05:00
Saúl Ibarra Corretgé
673dc6e873 build: drop dependency on babel-pollyfill
It's no longer needed for building since Node >= 6 already has the minimum
required ES6 syntax. In addition, drop it from app.js since we use Webpack with
the Babel loader to transpile ES5 to ES6.
2017-04-03 09:48:44 +02:00
Saúl Ibarra Corretgé
9c544c0a4b eslint: remove no longer needed comment
jsdocs were added, remove old comment which no longer applies.
2017-04-03 09:26:57 +02:00
Ilya Daynatovich
8502ecc6d2 Allow wider Flow use
We (i.e. the jitsi-meet project) are using the haste module system on
Web as well, not only on React Native. Unfortunately, Flow does not
support .web.js by default. Override Flow's defaults to include .web.js
as well. Technically, we have .native.js as well so the choice of
.web.js may lead to errors. Practically though, it is a potential future
problem that we do not have at the time of this writing.

https://github.com/jitsi/jitsi-meet/pull/1397 will take advantage of the
wider Flow use. The PR in question is huge at the time of this writing.
In order to reduce it, I'm extracting changes not directly related to
React-ifying the Toolbar.
2017-03-31 15:02:32 -05:00
Ilya Daynatovich
74b5638d99 Add jsdocs, apply manual formatting
https://github.com/jitsi/jitsi-meet/pull/1397 (React Toolbar) is huge at
the time of this writing. In order to reduce it, I'm extracting changes
not directly related to React-ifying the Toolbar such as added jsdocs
and source code formatting.
2017-03-31 15:02:24 -05:00
Saúl Ibarra Corretgé
e8de8735e2 Merge pull request #1446 from jitsi/iframe_api_params
fix(iframe_api): Passing config params is not working
2017-03-31 17:47:14 +01:00
hristoterezov
dbcd19418c fix(iframe_api): Passing config params is not working 2017-03-31 11:40:55 -05:00
Saúl Ibarra Corretgé
a10f040df6 Merge pull request #1440 from jitsi/iframe_api_race_condition
Fix executeCommand race condition
2017-03-31 16:48:50 +01:00
Saúl Ibarra Corretgé
88a7ff891c Merge pull request #1449 from virtuacoplenny/lenny/styled-components
deps: include styled-components package for @atlaskit components
2017-03-31 09:25:42 +01:00
Leonard Kim
2b4db6c3bf deps: include styled-components package for @atlaskit components
@atlaskit components will all require styled-components in the
future. Including it now will remove the unmet peer
dependency warning during npm install and prevent future build
breakages that might occur from using a new @atlaskit component
that requires it.

Pull Request #1449
2017-03-30 14:05:01 -07:00
Saúl Ibarra Corretgé
4ddc426966 [RN] Move setting last N action to base/conference
This is in preparation for an upcoming "audio only mode" feature. Setting last N
will also be required for it, so this patch factors out the action and makes it
public so other modules can reuse it.

In addition, if the value is set to undefined the configured default value (or
-1 if absent) is picked.
2017-03-30 14:40:05 -05:00
damencho
309ce43e05 Moves native password required prompt to room lock feature.
Moves native dialogs to use dialog container. Implements native Dialog that uses react native Prompt.
2017-03-30 14:21:15 -05:00
damencho
61470c0d24 Moves web password required dialog to react. 2017-03-30 14:21:05 -05:00
virtuacoplenny
2301732e2d style: catalog all z-indexes and move toolbar down
All z-indexes found in css files have been moved into css
variables. If the z-index is used only once, the variable
name will be the same as the selector it is used in. If
the z-index is used multiple times, then the plain name
of $zindex# was used. This allowed a more confident
moving down of the toolbar so that the new modal dialog,
with z-index 500, could display on top of it.

#1436
2017-03-30 18:13:00 +01:00
virtuacoplenny
24ee8eb16a electron: add desktop picker
#1411
2017-03-30 17:58:31 +01:00
Lyubo Marinov
57065bb274 Update NPM dependencies/packages 2017-03-30 09:11:02 -05:00
hristoterezov
4ab4aa04da fix(avatar): Avatar properties not updated before local user join
Replaces changeAvatarID, changeAvatarURL and changeEmail with
participantUpdated action.
participantUpdated can be fired for local user without id. This
fixes the problem with updating the local user before the user
join the conference which results in fix for failing to execute
commands for avatarID, avatarURL and email right after the iframe
api creates the iframe with Jitsi Meet.
2017-03-29 10:23:07 -05:00
hristoterezov
0ed39dad63 fix(iframe_api): Display name command race condition
If executeCommand('displayName') is executed before Jitsi Meet
is fully initialized some listeners were not added and the
display name was not changed.
2017-03-29 10:23:07 -05:00
Saúl Ibarra Corretgé
08531ee675 Merge pull request #1443 from ibc/master
edge: Add userMedia.edgeGrantPermissions in lang/main.json
2017-03-29 13:35:51 +02:00
Iñaki Baz Castillo
e7140ffec7 edge: Add userMedia.edgeGrantPermissions in lang/main.json 2017-03-29 13:03:57 +02:00
damencho
c58c4b7938 Commit from translate.jitsi.org by user damencho.: 306 of 318 strings translated (0 fuzzy). 2017-03-28 21:29:17 +00:00
Lyubo Marinov
4e276471e5 Comply w/ coding style: consistency 2017-03-28 11:43:33 -05:00
Saúl Ibarra Corretgé
c5eac63da1 [RN] Move all mobile only features to a subdirectory 2017-03-28 09:36:00 -05:00
Saúl Ibarra Corretgé
866c6d0cf9 Merge pull request #1378 from saghul/doc-api-params
doc: improve docs on external API constructor parameters
2017-03-28 11:26:14 +02:00
Lyubo Marinov
165294bfb1 Comply w/ coding style 2017-03-27 22:50:47 -05:00
Saúl Ibarra Corretgé
2d5f0479bd [RN] Disable remote video while in the background
Set the video channel "last N" property to 0, thus making the client not receive
any remote video.
2017-03-27 22:11:13 -05:00
yanas
e8068cf5ac Merge pull request #1393 from jitsi/filmstrip_overlays
Filmstrip overlays
2017-03-27 14:54:45 -05:00
yanas
d0171cf386 Merge pull request #1435 from jitsi/fix-settings-translation
Fixes settings panel translation.
2017-03-27 14:52:01 -05:00
hristoterezov
3ae99ea0b9 feat(overlays): for filmstrip only mode 2017-03-27 14:20:25 -05:00
damencho
4e9450f200 Fixes settings panel translation.
Strings are not translated when opening the settings side panel. It was that we were creating settings panel html after i18n library had loaded and had translated the rest of the html.
The element selecting the current language was also not translated, which end up with no selection in the UI for the current language.
2017-03-27 13:54:14 -05:00
Saúl Ibarra Corretgé
dc2c49f4a9 doc: improve docs on external API constructor parameters 2017-03-27 12:17:32 +02:00
hristoterezov
c461e8b63c ref(overlays): Replace the abstract class for overlays with overlay frame component
In this case makes more sense to have overlay frame included in every overlay instead
of abstract class that implements the overlay frame and have to be extended by every
overlay. In addition, mapStateToProps isn't working well with inheritance.
2017-03-24 13:16:14 -05:00
Saúl Ibarra Corretgé
f47bc1163b Merge pull request #1432 from jitsi/speaker-stats-analytics-event
Sends analytics event every time speaker stats is open.
2017-03-24 16:35:59 +01:00
Дамян Минков
851be2d76e Merge pull request #1385 from saghul/make-update-deps
build: remove no longer needed Makefile rule
2017-03-24 10:13:47 -05:00
damencho
63034e6cba Sends analytics event everytime speaker stats is open. 2017-03-24 10:07:46 -05:00
Lyubo Marinov
84b9c5f5fd Coding style 2017-03-24 09:06:54 -05:00
Saúl Ibarra Corretgé
43c8fc6847 [RN] Fix mirroring video views on platforms with native support 2017-03-24 09:02:32 -05:00
Saúl Ibarra Corretgé
bc60bd23b2 build: remove no longer needed Makefile rule
- we now use pinned dependencies, so there is no need to run npm update
- AFAICT the node-sass workaround is no longer needed
2017-03-24 11:02:09 +01:00
damencho
e29120a9c1 Changes lastN event params to leaving and entering endpoint IDs.
Uses leavingIDs to more efficiently iterate over remote videos.
2017-03-23 09:32:27 -05:00
damencho
d383230532 Removes unused code. 2017-03-23 09:32:27 -05:00
bbaldino
9a46896600 Merge pull request #1402 from jitsi/p2p_ver2
P2P ver2
2017-03-22 16:10:13 -07:00
paweldomas
fba086134d add default STUN servers to config.js 2017-03-22 11:23:30 -05:00
paweldomas
2973364c02 feat(stats - show more): local p2p transport indication
Will show (direct) next to the UPD or TCP transport type if we're
running on P2P connection.
2017-03-22 11:23:30 -05:00
paweldomas
542bb7caed doc: add FIXME 2017-03-22 11:23:29 -05:00
paweldomas
fb47b6ae21 feat: add test P2P methods 2017-03-22 11:23:29 -05:00
hristoterezov
aeb301c8d5 feat(iframe_api): Add jwt token parameter 2017-03-21 22:34:44 +01:00
yanas
704e14f008 Handle last n in the client (#1389)
* Handle last n in the client

* fix(LargeVideoManager.js): Fixes check for low bandwidth. Needs more work

* fix(LargeVideoManager.js): Fixes the Shared Video test.

* fix(LargeVideoManager): Fix shared video view and remove last n checks.

* fix(LargeVideoManager): Fixes jsdoc comment

* fix(RemoteVideo): Fix connection status check

* fix(LargeVideoManager,RemoteVideo): Syntax errors
2017-03-21 12:14:13 -05:00
Lyubo Marinov
d1050d6b02 Update NPM dependencies/packages 2017-03-21 09:22:53 -05:00
Aaron van Meerten
afc96808e8 added support of static directory in debian install and Makefile for source package 2017-03-20 19:22:06 -05:00
Aaron van Meerten
dc2bae4ae1 Merge pull request #1420 from jitsi/static-content-folder
Moves all static content/files in a new folder.
2017-03-20 17:13:10 -05:00
damencho
1d7da21e48 Moves all static content/files in a new folder.
Also clears debian package from including *.js files from source roote folder, files which were not used.
2017-03-20 16:05:11 -05:00
Ilya Daynatovich
affd965d5d Remove an unnecessary file 2017-03-20 14:42:54 -05:00
Leonard Kim
989161159d Modal dialog for displaying dominant speaker times 2017-03-20 12:47:20 -05:00
Ilya Daynatovich
59a74153dc Toolbar notice as React Component 2017-03-20 11:27:08 -05:00
yanas
6690c269ef Merge pull request #1413 from jitsi/fix-missing-translation
Fixes wrong i18n key for somebody.
2017-03-20 11:03:45 -05:00
George Politis
b7fd10b905 Merge pull request #1412 from jitsi/framerate-update
Updates framerate using local statistics.
2017-03-17 17:17:24 -05:00
damencho
08e1cf1b7e Fixes wrong i18n key for somebody. 2017-03-17 16:43:43 -05:00
damencho
54d891afa7 Updates framerate using local statistics. 2017-03-17 16:10:45 -05:00
Aaron van Meerten
ae41782cd4 Merge pull request #1410 from jitsi/letsencrypt-script
Adds a script which install certificates from let's encrypt.
2017-03-17 15:53:52 -05:00
damencho
8591fe00b6 Adds a script which install certificates from let's encrypt.
The script looks for nginx, apache2 or jetty configuration and edits the first one found. Nginx and apache2 will be reloaded, while jvb will be stopped, configured and started again.
2017-03-17 14:49:10 -05:00
Saúl Ibarra Corretgé
92f58cb3c1 doc: add information about how to contribute
Inspired by the document at jitsi/jitsi.
2017-03-17 08:35:56 -05:00
Saúl Ibarra Corretgé
4ad98ca505 doc: fix typo 2017-03-17 10:48:38 +01:00
yanas
b9374bde6b Merge pull request #1383 from jitsi/fix-wrong-pass-on-auth
Fix incorrect password dialog message when using authentication.
2017-03-16 14:13:18 -05:00
pierreozoux
1ff29384b3 Add a network schemas
This is to help understanding how things are wired.
2017-03-16 11:30:28 -05:00
Saúl Ibarra Corretgé
4fc714ff10 lang: don't use "&nbsp;" for the default policy text
Firefox (at least) renders it verbatim.
2017-03-16 11:16:14 -05:00
damencho
51f0c8a388 Adds base dialog implementation. 2017-03-15 16:33:04 -05:00
damencho
d01a65f73d Fixes stats, using wrong object members in latest update. 2017-03-15 15:48:13 -05:00
damencho
65239f9ffe Adds frame rate to statistics bubble. 2017-03-15 13:31:42 -05:00
damencho
e5cefcce70 Updates transport type.
Updates transport type to show multiple values as we do for addresses and ports.
2017-03-14 15:51:11 -05:00
Ingo Bauersachs
8002b5ec6a Add Esperanto 2017-03-14 20:36:09 +01:00
jitsi-pootle
a575f5cc77 New files added from translate.jitsi.org based on templates 2017-03-14 19:44:37 +00:00
ibauersachs
ab3a80e076 Commit from translate.jitsi.org by user ibauersachs.: 317 of 317 strings translated (0 fuzzy). 2017-03-14 19:44:07 +00:00
ibauersachs
dda3798ba9 Commit from translate.jitsi.org by user ibauersachs.: 317 of 317 strings translated (0 fuzzy). 2017-03-14 19:43:50 +00:00
Lyubo Marinov
e6f906b9ca [RN] Fix undefined.avatarID in ParticipantView 2017-03-08 17:05:55 -06:00
hristoterezov
d74e43ddcc [RN] fix(Avatar): Match the implementation for web 2017-03-08 13:21:34 -06:00
Lyubo Marinov
23ddce122b Comply w/ coding style 2017-03-07 21:54:37 -06:00
hristoterezov
814bd26c07 feat(Avatar): Implement Avatar for web 2017-03-07 21:54:37 -06:00
damencho
2e4b39c19c Fixes loading jquery-i18next. 2017-03-07 17:30:20 -06:00
Дамян Минков
3ee65748bb Merge pull request #1382 from jitsi/load_error_handler_placeholder
Post load error handler
2017-03-07 17:29:30 -06:00
damencho
5f387737a1 Fix incorrect password dialog message when using authentication. 2017-03-07 16:42:36 -06:00
paweldomas
4fa800b87a feat(index.html): post load error handler
Adds a placeholder which allows to write a plugin for executing some
code after the "load error handler" is triggered. A function named
"postLoadErrorHandler" should be defined in one of
the "#include virtual" files.
2017-03-07 16:29:50 -06:00
Emil Ivov
9338b3cf94 Adds links to mobile builds 2017-03-07 15:44:10 -06:00
Lyubo Marinov
45e09af692 react-native 0.42.0 2017-03-07 15:09:39 -06:00
yanas
9d32f48ab8 [IOS Assets] Fixes launch screen 480x3 image 2017-03-07 13:12:26 -06:00
Lyubo Marinov
290e7baead Stick to the exact package versions for the direct dependencies 2017-03-02 21:46:43 -06:00
Любомир Маринов
e780ae00d0 Merge pull request #1360 from jitsi/move_avatar
ref(avatar): Move Avatar and ParticipantView to base/participants
2017-03-02 21:17:41 -06:00
hristoterezov
9ea224412d ref(avatar): Move Avatar and Participant view to base/participants 2017-03-02 16:57:43 -06:00
ibauersachs
cd8ae07698 Commit from translate.jitsi.org by user ibauersachs.: 317 of 317 strings translated (0 fuzzy). 2017-03-02 21:36:45 +00:00
Ingo Bauersachs
433a73e13d Add Norwegian Bokmal 2017-03-02 22:14:06 +01:00
jitsi-pootle
1e558f4da6 New files added from translate.jitsi.org based on templates 2017-03-02 21:21:41 +00:00
Lyubo Marinov
aef6e33c91 [RN] Fix remote JS debugging 2017-03-01 21:33:49 -06:00
Lyubo Marinov
acd83ede2f [RN] Third-party ES6 Symbol ponyfill 2017-03-01 21:31:43 -06:00
Lyubo Marinov
bd51613e62 [RN] Support the for...of statement in lib-jitsi-meet 2017-03-01 21:30:21 -06:00
ibauersachs
246cb39003 Commit from translate.jitsi.org by user ibauersachs.: 306 of 306 strings translated (0 fuzzy). 2017-03-01 21:07:11 +00:00
Lyubo Marinov
3b54c527b6 Remove obsolete source code 2017-02-28 23:22:03 -06:00
Lyubo Marinov
18368fefaa Comply w/ coding style 2017-02-28 23:22:02 -06:00
damencho
c361e1e31a Translate react strings.
Split language detectors to be web/native dependent. Take care of strings that contain html.
2017-02-28 13:16:42 -06:00
damencho
e3d4152e32 Adds react-i18next and its provider to react.
Adds translate function with default namespaces and options.
2017-02-28 13:13:47 -06:00
damencho
d861ba1876 Moves translation to react and use i18next language detectors. 2017-02-28 13:13:47 -06:00
George Politis
c942017b73 Merge pull request #1341 from saghul/doc-disableRtx
config: switch default disableRtx to false
2017-02-28 08:52:33 -06:00
Lyubo Marinov
743d12e326 Default to mobile app promotion 2017-02-28 00:18:52 -06:00
Lyubo Marinov
d371a3d5fd Fix TypeError: undefined is not an object 2017-02-28 00:18:52 -06:00
Lyubo Marinov
e1056126e6 Fix TypeError: undefined is not an object 2017-02-28 00:18:51 -06:00
Lyubo Marinov
72c267fbf3 Fix the human-readable text 2017-02-28 00:18:51 -06:00
Lyubo Marinov
0ed85b9d25 Replace features/unsupported-browser SET_UNSUPPORTED_BROWSER with features/base/lib-jitsi-meet SET_WEBRTC_READY
The error raised by JitsiMeetJS.init() is already in the state of
features/base/lib-jitsi-meet so it's not a good design to store the same
error in the state of features/unsupported-browser.
2017-02-28 00:18:51 -06:00
Ilya Daynatovich
a8877d82b6 Rename style component; Use of status codes instead of flags in conference init 2017-02-28 00:18:51 -06:00
Ilya Daynatovich
8896b0adf3 Fix problem with dialogs 2017-02-28 00:18:50 -06:00
Ilya Daynatovich
60b14e9b45 Some fixes mentioned in the PR 2017-02-28 00:18:50 -06:00
Ilya Daynatovich
631e853b40 Update register/unregister listeners logic of some components in the old app 2017-02-28 00:18:50 -06:00
Ilya Daynatovich
b409c8cc2f Fix reload regression 2017-02-27 21:50:21 -06:00
Ilya Daynatovich
905212b109 Enable flow for written code 2017-02-27 21:50:20 -06:00
Ilya Daynatovich
05b7df26e6 Add no mobile app component 2017-02-27 21:50:20 -06:00
Ilya Daynatovich
1268afd3f8 Added unsuported browser and plugin required pages 2017-02-27 21:50:20 -06:00
Lyubo Marinov
c1b9b7a623 Prevent undefined JitsiMeetJS 2017-02-27 21:35:34 -06:00
Lyubo Marinov
0b9160fb75 LIB_DID_DISPOSE, LIB_DID_INIT, LIB_WILL_DISPOSE, LIB_WILL_INIT 2017-02-27 16:45:53 -06:00
George Politis
93c9419392 Merge pull request #1362 from bgrozev/no-extension-on-ff-52
config: Don't require an extension for firefox >=52.
2017-02-27 16:36:31 -06:00
Boris Grozev
6121bcf171 config: Don't require an extension for firefox >=52.
Starting with firefox 52, no extension is required for screensharing.
See https://wiki.mozilla.org/Screensharing
2017-02-27 16:08:13 -06:00
Lyubo Marinov
702144180c Be consistent, simplify the source code 2017-02-25 19:00:35 -06:00
Lyubo Marinov
d2b2f98941 Fix typo 2017-02-25 18:58:23 -06:00
Lyubo Marinov
ec95956e25 [RN] Prepare for modifications to unsupported-browser 2017-02-24 13:08:49 -06:00
Lyubo Marinov
d6d7ce1b67 [RN] Move preferH264 where it will be in effect (in the future) 2017-02-24 12:59:30 -06:00
bgrozev
4cb36b0a5d Merge pull request #1337 from saghul/cleanup-adaptive-simulcast
cleanup: remove old adaptive simulcast config option
2017-02-24 11:43:22 -06:00
George Politis
2b3aea76a9 doc: Nukes influxdb.md because influx support has been nuked. 2017-02-23 17:22:06 -06:00
Lyubo Marinov
f50a31b4e8 [RN] Simplify the source code 2017-02-23 17:14:04 -06:00
Saúl Ibarra Corretgé
b226c3aca3 [RN] Fix loading config.js from URLs with a non-standard port
`host` contains the hostname:port portion, whereas `hostname` is just the
hostname, not including the port.
2017-02-23 17:14:04 -06:00
yanas
4979666a89 Merge pull request #1342 from jitsi/filmstriponly_transparent
fix(filmstriponly): Set the background to transparent
2017-02-23 16:11:35 -06:00
yanas
c9636f85b9 Merge pull request #1314 from virtuacoplenny/lenny/audio-slider
Volume slider for remote participant audio elements
2017-02-23 15:48:52 -06:00
hristoterezov
436bc87a86 fix(overlay): comments after review 2017-02-23 13:50:09 -06:00
Lyubo Marinov
e89c2b242d Android plugin for Gradle 2.2.3
Recent versions of the Android plugin for Gradle started to automatically
download the SDK build tools dependency if it is not installed already.
So it is no longer necessary to have the developer of the Android app
install the SDK build tools dependency in advance.
2017-02-23 13:14:19 -06:00
Leonard Kim
02b26a65bb Volume slider for remote participant audio elements 2017-02-23 09:01:40 -08:00
Дамян Минков
6a3e4bb59f Merge pull request #1311 from saghul/resources
Move miscellaneous files to resources
2017-02-23 06:42:15 -08:00
Saúl Ibarra Corretgé
b01ad360da Move miscellaneous files to resources 2017-02-23 10:01:19 +01:00
Ilya Daynatovich
c7f3740099 Fix IE redirect problem 2017-02-22 23:36:06 -06:00
Дамян Минков
554595acd7 Merge pull request #1348 from jitsi/restyle-range-inputs
Re-styles range inputs for Chrome and FF.
2017-02-22 21:44:46 -06:00
yanas
ee4ddd5446 Fixes indentation 2017-02-22 17:14:09 -06:00
yanas
ebab617a12 Re-styles range inputs for Chrome and FF. 2017-02-22 16:49:56 -06:00
Lyubo Marinov
bc5d92a452 [RN] Prefer H.264 2017-02-22 08:28:19 -06:00
Saúl Ibarra Corretgé
2f388dfb6a Fix warning about missing key prop
When rendering using a for loop each child whould have a key prop.
2017-02-22 12:08:12 +01:00
Boris Grozev
73a0197eb2 doc: Adds a note on installing ios-deploy on MacOS 10.11. 2017-02-21 14:43:59 -06:00
hristoterezov
b6990e9e5d fix(filmstriponly): Set the background to transparent 2017-02-21 13:45:46 -06:00
Lyubo Marinov
26e119bfc2 Comply w/ coding style 2017-02-21 13:33:25 -06:00
Saúl Ibarra Corretgé
9f866ae608 config: switch default disableRtx to false 2017-02-21 20:02:55 +01:00
Saúl Ibarra Corretgé
023359b9d2 [RN] Avoid rendering Container if not visible
This solves the issue of view clipping on Android, plus it seems to be the RN
convention unless the views are very large and memory hungry.
2017-02-21 11:13:36 -06:00
bgrozev
2128d047e1 Merge pull request #1339 from saghul/fix-doc-links
doc: fix markdown link syntax in mobile docs
2017-02-21 10:49:27 -06:00
Saúl Ibarra Corretgé
a89349c5b9 doc: fix markdown link syntax in mobile docs 2017-02-21 17:37:56 +01:00
Lyubo Marinov
d109b8beb6 Comply w/ coding style 2017-02-21 09:39:59 -06:00
Saúl Ibarra Corretgé
9b40572921 [RN] Fix Android immersive mode when coming from the background
Fixes an issue where immersive mode would be enabled when coming back from the
background on the welcome screen.

Re-fixes c57e713, which was not correct.
2017-02-21 09:13:30 -06:00
Lyubo Marinov
aaf7a38cce Detail comment 2017-02-21 09:09:07 -06:00
Saúl Ibarra Corretgé
1ed0759a50 [RN] Temporarily disable camera toggling button
It doesn't work properly and gives a very bad user experience. Disble it until
all underlying issues in react-native-webrtc are ironed out.
2017-02-21 08:33:31 -06:00
Saúl Ibarra Corretgé
213b73da6e cleanup: remove old adaptive simulcast config option 2017-02-20 15:46:41 +01:00
Saúl Ibarra Corretgé
5b6985fc5c [RN] Fix use of undefined APP
On RN we don't use the global APP object, so don't save the store there unless
it's defined, which is the case in the current web version. Also, check for
undefined explicitly, since a "if (!APP)" check will throw a ReferenceError.
2017-02-20 11:16:01 +01:00
Lyubomir Marinov
538af01bf5 Comply w/ coding style 2017-02-18 21:57:38 -06:00
hristoterezov
92d0589a37 ref(overlay): The overlays to use React 2017-02-18 17:03:50 -06:00
Lyubomir Marinov
f3269070b2 [iOS] iPad support 2017-02-18 11:36:14 -06:00
Lyubomir Marinov
d93bd3eda7 [RN] Use a default host when only a room name is specified
The mobile app remembers the domain which hosted the last conference. If
the user specified a full URL first and specified a room name only the
second time, it was not obvious that the second conference would be
hosted on the domain of the first conference.
2017-02-18 10:04:08 -06:00
Yana Stamcheva
0dbbc5d8b6 [Android] Circular app/launcher icon(s) 2017-02-17 13:54:01 -06:00
George Politis
08efd5ecab Merge pull request #1327 from saghul/doc-resolution
doc: document resolution config option and set it to 720 by default
2017-02-17 11:33:04 -06:00
Lyubomir Marinov
dba1bcb0e3 [RN] Increment short app version from 1.2 to 1.3
Now that Apple have approved build 1.2.199 for release in the App Store,
the short app version needs to be incremented; otherwise, no new builds
can be uploaded to TestFlight and, respectively, for release in the App
Store.
2017-02-17 09:32:24 -06:00
yanas
348403abff Merge pull request #1326 from jitsi/fix-manual-tooltips
Fixes manual triggered tooltips text and no hover.
2017-02-17 09:26:58 -06:00
Paweł Domas
c290cf45b7 Merge pull request #1328 from saghul/cleanup-adaptive-lastn
cleanup: remove adaptive las N config option
2017-02-17 09:14:47 -06:00
Saúl Ibarra Corretgé
175c8e6e50 cleanup: remove adaptive las N config option
The feature has been replaced so the option no longer applies.
2017-02-17 15:33:20 +01:00
Saúl Ibarra Corretgé
f90667b23c doc: document resolution config option and set it to 720 by default 2017-02-17 13:53:41 +01:00
damencho
cf69d591e4 Fixes manual triggered tooltips text and no hover. 2017-02-17 00:14:58 +02:00
Lyubomir Marinov
e599491583 Remove duplication 2017-02-16 15:17:05 -06:00
Lyubomir Marinov
d1520773cf Improve consistency 2017-02-16 15:16:17 -06:00
Saúl Ibarra Corretgé
573ca97b6c [RN] Add workaround for Android view clipping
Looks like Android gets confused as to what surface to blit when we hide or
show toolbars. Setting a border on the container, seems to force the entire
area to blit properly.

Other attempted approaches, with no success:
- zIndex of -100
- width and height of 0
- opacity of 0 and setting 'disabled' on touch containers

This patch applies the workaround in the welcome page and conference containers.
2017-02-16 14:37:42 -06:00
Lyubomir Marinov
0d97f14a1a flow 2017-02-16 13:59:28 -06:00
Lyubomir Marinov
b8f28abfdf [RN] Fix incorrect JitsiMeetJS.init error handling 2017-02-16 13:59:12 -06:00
Lyubomir Marinov
9ac7c97e67 [RN] Enforce mandatory mobile app-specific config 2017-02-16 13:58:39 -06:00
Lyubomir Marinov
52b3eaacb5 [RN] Fix passing config.js to JitsiMeetJS.init 2017-02-16 13:51:01 -06:00
ibauersachs
9b01ae6db9 Commit from translate.jitsi.org by user ibauersachs.: 306 of 306 strings translated (0 fuzzy). 2017-02-16 06:55:14 +00:00
Ingo Bauersachs
469487ad36 Add Chinese (China) 2017-02-16 07:39:57 +01:00
jitsi-pootle
176c3c1601 New files added from translate.jitsi.org based on templates 2017-02-16 06:46:38 +00:00
yanas
94391234cc Merge pull request #1322 from jitsi/livestream_help_link
livestream link help link
2017-02-15 22:35:57 -06:00
yanas
d84901f196 Font size adjustment and moving link to config param 2017-02-15 17:57:57 -06:00
yanas
c6b117565d Merge branch 'livestream_help_link' of https://github.com/jitsi/jitsi-meet into livestream_help_link 2017-02-15 16:41:49 -06:00
yanas
2a9124acb5 Merge pull request #1316 from jitsi/custom-button-tooltips
Uses tooltip to show custom popups for mute mic button.
2017-02-15 16:20:36 -06:00
Lyubomir Marinov
401a783d6a Coding style consistency
Includes automatic recommended Xcode project file fixes.
2017-02-15 13:48:56 -06:00
Lyubomir Marinov
39483a30b6 Polyfill Element.innerHTML
Lib-jitsi-meet uses jQuery's .append method to manipulate Jingle. The
method in question invokes the getter and setter of Element.innerHTML.
Unfortunately, xmldom which we use in React Native to polyfill DOM does
not polyfill Element.innerHTML. So polyfill it ourselves.
2017-02-15 13:18:21 -06:00
Lyubomir Marinov
0e2a07f8d7 Stick to react-native-background-timer 1.0.0
Recently expose-loader broke us when it updated from 0.7.1 to 0.7.2 and
we decided to stick to exact versions.
2017-02-15 13:18:20 -06:00
Saúl Ibarra Corretgé
36f5b0218d [RN] Fix running timers in the background
Turns out React Native's timers (setTimeout / setInterval) don't run while the
app is in the background: https://github.com/facebook/react-native/issues/167

This patch replaces the global timer functions with those from the
react-native-background-timer package, which work in the background.

These timers won't magically make an application work in the background, but
they will run if an application already happens to run in the background. That's
our case while in a conference, so these timers will run, allowing XMPP pings to
be sent and the conference to stay up as long as the user desires.
2017-02-15 11:50:54 -06:00
damencho
a1b3c56de7 Uses tooltip to show custom popups for mute mic button/shared video button. 2017-02-15 11:29:26 +02:00
Aaron van Meerten
6d664f133e Cosmetic fixes for column length lint errors 2017-02-14 17:11:31 -06:00
Aaron van Meerten
732a433ec1 livestream link to provide more context to users on where to retrieve their stream key 2017-02-14 16:07:12 -06:00
Lyubomir Marinov
f7dcd1ba2c Stick to expose-loader 0.7.1
0.7.2 causes a ReferenceError: jQuery is not defined in autosize.
2017-02-14 08:07:49 -06:00
Lyubomir Marinov
55a8b44224 Consistent middleware and reducer imports 2017-02-10 11:04:40 -06:00
Lyubomir Marinov
e29db31d91 Comply w/ coding style 2017-02-10 10:13:39 -06:00
Lyubomir Marinov
183d3c3ca4 Fix a possible undefined state usage 2017-02-10 00:47:55 -06:00
Saúl Ibarra Corretgé
c57e713696 [RN] Fix full-screen mode when coming back from the background
On Android the status and navigation bars are shown again after coming back from
the background, so enter full-screen mode again if needed.
2017-02-10 00:44:37 -06:00
Saúl Ibarra Corretgé
4519f26adf [RN] Mute local video when app is in the background 2017-02-10 00:44:37 -06:00
bgrozev
c26f9cc01f Merge pull request #1301 from jitsi/video-thumbnail-margin
Lower the margin between video thumbnails
2017-02-09 11:43:55 -06:00
yanas
53e784094a Merge pull request #1308 from jitsi/ss_resize_remote
Fix for the size of remote desktop sharing videos
2017-02-08 15:31:06 -06:00
hristoterezov
0e92e48376 fix(ss): resize for remote videos 2017-02-08 14:58:42 -06:00
Lyubomir Marinov
4c9943ac38 Fix an image path on the mobile landing page 2017-02-08 12:41:51 -06:00
Дамян Минков
4bd0fd145d Merge pull request #1293 from jitsi/prosody_plugin_muc_all_owners
prosody plugin to make all users owners/moderators
2017-02-08 13:17:42 +02:00
Lyubomir Marinov
01ae82eb28 No Temasys alert on mobile Web 2017-02-07 21:54:08 -06:00
Lyubomir Marinov
e21eae0933 Prepare for webpack 2 2017-02-07 15:44:37 -06:00
Lyubomir Marinov
2f047c50dc Revert "No Temasys alert on mobile Web"
This reverts commit b09e86352f.
2017-02-07 15:21:34 -06:00
yanas
e397e1a80c Merge pull request #1303 from jitsi/no-temasys-alert-on-mobile
No Temasys alert on mobile (Web)
2017-02-07 15:11:09 -06:00
Lyubomir Marinov
b09e86352f No Temasys alert on mobile Web 2017-02-07 15:08:38 -06:00
Lyubomir Marinov
8687b69167 Consistency
Be consistent about formatting within 1 and the same file.
2017-02-07 08:29:40 -06:00
Lyubomir Marinov
6c5468d904 Simplify the source code
If half the file is written in ES6, it is easier to read if the rest of
the file is in ES6 as well. If ES6 is used, then const is better than
let. If source code is shorter yet as readable as the long version, then
prefer the short version.
2017-02-07 08:29:40 -06:00
Lyubomir Marinov
d6b0f8d4c5 Use functions, do not re-implement them
We have the functions reload and redirect which modify window.location.
Use them and do not directly modify window.location so that we have
fewer places of direct window.location modifications and it is easier to
refactor them.
2017-02-07 08:29:40 -06:00
Lyubomir Marinov
a8cd4ff12c 1, not 2 names for 1 and the same abstraction
window.location calls it reload so util/helpers shouldn't call it
redirect because UI/util/UIUtil has it is own redirect which is the
assign of window.location.
2017-02-07 08:29:40 -06:00
Lyubomir Marinov
8509efc8af Make the Web app aware of its context root 2017-02-07 08:27:23 -06:00
Saúl Ibarra Corretgé
23a0053dad doc: add section about embedding to the README 2017-02-06 17:41:19 -06:00
Saúl Ibarra Corretgé
5849980092 external_api: fix jsdoc 2017-02-06 17:41:19 -06:00
Saúl Ibarra Corretgé
e81fc2b254 doc: fix external API documentation
- use proper punctuation
- fix markdown syntax
- always use syntax highlighting
- document missing commands
- miscellaneous grammar fixes
2017-02-06 17:41:19 -06:00
yanas
f6f730b994 Lower the margin between video thumbnails 2017-02-06 15:34:05 -06:00
Lyubomir Marinov
2ad869a036 Comply w/ coding style
- Use 1 name for 1 abstraction. Instead of useFullScreen and enabled use
  fullScreen.
- Comments are correct English sentences so no double spaces between
  senteces, no capitalization of the work On midsentence.
- Write as little source code as possible if readability is preserved.
- Utilize Facebook's Flow.
- The name of a private function must start with _ and the jsdoc should
  state that the function is private.
2017-02-06 15:32:03 -06:00
Saúl Ibarra Corretgé
7a8c84e990 [RN] Implement full screen mode while in a conference
The implementation varies across platforms, with the same goal: allow the app to
use the entire screen real state while in a conference.

On Android we use immersive mode, which  will hide the status and navigation bars.

https://developer.android.com/training/system-ui/immersive.html

On iOS the status bar is hidden, with a slide effect.
2017-02-06 13:51:17 -06:00
Lyubomir Marinov
0de01e93dd react-native 0.41.2 2017-02-06 12:24:38 -06:00
Lyubomir Marinov
6fa93e5b44 file-loader 0.10.0 2017-02-06 12:24:38 -06:00
Lyubomir Marinov
2144ec1e3f eslint 3.15.0 2017-02-06 12:24:38 -06:00
bgrozev
68d2f60ace Merge pull request #1276 from jitsi/respect-disable-rtx
fix: Respect the disableRtx config option.
2017-02-06 11:52:03 -06:00
George Politis
3d671ae71f docs: Documents the disableRtx config option. 2017-02-06 11:19:33 -06:00
Lyubomir Marinov
8ed47f9d99 [flow] Lint with Flow (in addition to JSHint and ESLint) 2017-02-03 16:36:14 -06:00
Lyubomir Marinov
b50f858556 [flow] Expand the coverage of flow-monitored files 2017-02-03 16:36:14 -06:00
Lyubomir Marinov
5de1a74429 [flow] Take advantage of flow-typed 2017-02-03 16:36:14 -06:00
Lyubomir Marinov
2063ad467d flow-typed 2017-02-03 16:36:14 -06:00
Lyubomir Marinov
679acbae16 Use babel-eslint in the whole project 2017-02-03 16:36:14 -06:00
Aaron van Meerten
a5b706a99e Added a prosody plugin for making all users into muc owners in prosody
Included a patch to prosody-trunk which allows owners to kick each other
2017-02-03 11:41:08 -06:00
yanas
542e61357e Adds new combined camera and mic icon 2017-02-02 17:10:02 -06:00
Lyubomir Marinov
3743602c67 [RN] Fix the parsing of the domain out of a URL 2017-02-02 13:40:49 -06:00
Lyubomir Marinov
ee651840bf Fixes related to coding style 2017-02-02 10:54:24 -06:00
damencho
0765c60d77 Moves feedback button as a component.
When callstats is not configured hide the button.
2017-02-02 10:06:17 -06:00
Lyubomir Marinov
7fa17322a1 Consistency in naming and jsdocs 2017-02-02 09:46:09 -06:00
Lyubomir Marinov
cfa3047330 [flow] Type annotations 2017-02-02 09:45:34 -06:00
Lyubomir Marinov
9e033deb7b Remove unnecessary source code 2017-02-02 09:42:14 -06:00
Lyubomir Marinov
f6c914f6f0 [flow] A minimal demonstration of flow in action 2017-02-01 13:38:37 -06:00
Lyubomir Marinov
06ff02c2a5 [flow] Ignore packages in node_modules that cause errors and we do not want to fix 2017-02-01 13:38:37 -06:00
Lyubomir Marinov
63fd263890 flow 0.36.0
The first step towards enabling Facbook's flow in the project. The flow
configuration is pristine as generated by react-native upgrade.
2017-02-01 13:38:37 -06:00
Lyubomir Marinov
94f3d4b279 [RN] Expand domains supported by Universal Links 2017-01-31 22:47:47 -06:00
Lyubomir Marinov
fdc96044ad [RN] App-specific URL scheme 2017-01-31 22:47:47 -06:00
Lyubomir Marinov
91487ffc94 Fix a case of endless recursion 2017-01-31 22:47:47 -06:00
Saúl Ibarra Corretgé
7a57dcc08a doc: add documentation on how to build the mobile apps 2017-01-31 22:32:15 -06:00
Дамян Минков
913a54713d Adds testing repo to readme. 2017-01-31 21:42:45 -06:00
damencho
39a8681e8e Improves safe checks for missing stats. 2017-01-30 17:01:25 -06:00
George Politis
a7015b0d1a fix: Respect the disableRtx config option. 2017-01-30 16:20:23 +00:00
Lyubomir Marinov
5305f23332 Consistent naming of functions
Until we make a decision on access modifier hints and adopt a respective
coding style, consistency is king.
2017-01-28 20:15:10 -06:00
Lyubomir Marinov
acbf3adab7 Simplify: Remove react/features/base/react-native 2017-01-28 20:13:54 -06:00
Lyubomir Marinov
366b2f1374 Simplify: Remove react/features/base/navigator 2017-01-28 19:56:35 -06:00
Lyubomir Marinov
2189ab7ee6 Consistent naming of react-redux's mapStateToProps
Until we make a decision on access modifier hints and adopt a respective
coding style, consistency is king.
2017-01-28 17:34:57 -06:00
Lyubomir Marinov
349c04d8d1 Consistent naming of functions
Until we make a decision on access modifier hints and adopt a respective
coding style, consistency is king.
2017-01-28 17:28:13 -06:00
Lyubomir Marinov
c7c6249ad7 [RN] Fix room name case sensitivity
It turns out that it is not enough to give lib-jitsi-meet the room name
in lower case. BOSH also needs the room name in lower case.
2017-01-28 17:26:09 -06:00
Lyubomir Marinov
5319227a8f Fix jsdocs 2017-01-28 12:11:24 -06:00
Lyubomir Marinov
3aff812ee2 Consistent naming of Component props mapped from the Redux state
Until we make a decision on access modifier hints and adopt a respective
coding style, consistency is king.
2017-01-27 21:36:20 -06:00
Lyubomir Marinov
88eabf23f4 Remove obsolete UnsupportedMobileBrowser functionality
The desired behavior of the button 'Start a conference' / 'Join the
conversation' is to launch the mobile app if installed; otherwise, do
nothing i.e. continue to display UnsupportedMobileBrowser.

Anyway, we may change our minds about allowing the user to continue in a
supported mobile browser so preserve the source code that enables that
but give it more appropriate naming.
2017-01-27 21:29:09 -06:00
Любомир Маринов
a70beaf7b6 Merge pull request #1265 from jitsi/api
api/api.html -> examples/api.html && rm doc/api
2017-01-27 20:11:23 -06:00
Lyubomir Marinov
c91bffa73c Merge branch 'saghul-android-audiomode' 2017-01-26 23:48:42 -06:00
Lyubomir Marinov
ea163dbbba Merge branch 'deduplicate-index-js' 2017-01-26 23:48:09 -06:00
Lyubomir Marinov
18bc99d6b5 Split long methods into multiple shorter ones 2017-01-26 23:35:56 -06:00
Lyubomir Marinov
bab94a207d Remove unnecessary source code 2017-01-26 21:08:50 -06:00
Lyubomir Marinov
ef39baab47 Comply w/ coding style
- Maximum of 80 characters per line.
- Group first and then sort in alphabetical order.
- Fields should begin with a lowercase letter.
2017-01-26 21:07:35 -06:00
Saúl Ibarra Corretgé
2edaaac7bf [RN] Implement AudioMode module on Android
This module chooses the most appropriate audio default based on the specified
mode.
2017-01-26 19:18:10 -06:00
Saúl Ibarra Corretgé
113e50c074 [RN] Bump Andoroid minimum and target SDK versions
Use a minimum SDK version of 19, that is Anroid 4.4 (KitKat) and a target SDK of
23, that is, Android 6.0 (Marshmallow).
2017-01-26 19:18:10 -06:00
Дамян Минков
900a675864 Merge pull request #1269 from jitsi/border-radius-fix
Fixes border radius.
2017-01-26 17:55:01 -06:00
Lyubomir Marinov
49b3b49f3e Remove duplication
The files react/index.native.js and react/index.web.js ended up having
very similar source code related to initializing the Redux store. Remove
the duplication.

Additionally, I always wanted the App React Component to be consumed
without the need to provide a Redux store to it.
2017-01-26 17:24:11 -06:00
yanas
23935d3d39 Fixes border radius. 2017-01-26 17:04:29 -06:00
Дамян Минков
3fd33d0f50 Merge pull request #1262 from jitsi/ui-fixes
Ui fixes
2017-01-26 10:15:39 -06:00
hristoterezov
8c3317b8e9 doc(iframe_api): api/api.html -> examples/api.html && rm doc/api 2017-01-26 10:02:34 -06:00
Lyubomir Marinov
99a9fc054f eslint 3.14.1 2017-01-26 09:39:47 -06:00
Lyubomir Marinov
967dcfc3d2 react-native-keep-awake 2.0.2 2017-01-26 09:39:20 -06:00
Lyubomir Marinov
0051b3b79c Clean up obsolete file references 2017-01-26 07:58:56 -06:00
Lyubomir Marinov
cbcee201f0 Comply w/ coding style 2017-01-26 07:58:46 -06:00
Ilya Daynatovich
1fa4a53a48 Remove rule 2017-01-26 07:27:31 -06:00
Ilya Daynatovich
6a0b92638c Introduce interceptComponent function 2017-01-26 07:27:31 -06:00
Ilya Daynatovich
2e81b8493e Introduce unsupported browser page 2017-01-26 07:27:31 -06:00
Ilya Daynatovich
57ba702dda Clean up routing logic 2017-01-26 07:27:31 -06:00
Lyubomir Marinov
62bafcaf63 Introduce Platform in React
React Native provides a Platform abstraction which React does not
provide.
2017-01-26 07:27:31 -06:00
Lyubomir Marinov
7de5c9c1d2 Comply w/ coding style 2017-01-26 07:27:31 -06:00
Ilya Daynatovich
8248b14555 Integrate Mobile landing in the Redux app 2017-01-26 07:27:31 -06:00
Ilya Daynatovich
23ef0c8d9d justify text on landing page 2017-01-26 07:27:31 -06:00
Ilya Daynatovich
58a4f59fd8 Implement Landing component 2017-01-26 07:27:31 -06:00
Ilya Daynatovich
0c851934fb layout for mobile landing 2017-01-26 07:27:31 -06:00
Emil Ivov
8d58dbee38 Restores api.md to original location 2017-01-25 19:14:30 -06:00
yanas
cd5e84e4ef Fixes network problem message position 2017-01-25 16:54:51 -06:00
yanas
09ba14eb04 Fixes video thumbnail border and large video background color 2017-01-25 16:53:58 -06:00
Boris Grozev
b22f1965aa doc: Remove obsolete reference to browserify. 2017-01-25 15:48:32 -06:00
Samuel Liard
df6f920b44 Force jquery-ui version to fix pb with beta version we can get with npm
Use Maven in place of ant
Add --host parameter for jicofo
Add build for jitsi Meet

Revert "Force jquery-ui version to fix pb with beta version we can get with npm"

This reverts commit 35a8641e62.
2017-01-25 15:47:23 -06:00
Дамян Минков
f13b2462c8 Merge pull request #1257 from saghul/ds-options-cleanup
cleanup: Remove default Chrome extension ID
2017-01-23 17:04:59 -06:00
Paweł Domas
c0e80c14f8 Merge pull request #1192 from jitsi/remotecontrol
Implement remote control support
2017-01-23 17:00:11 -06:00
hristoterezov
2b1176df53 style(remotecontrol): getRequestedParticipant method comments 2017-01-23 16:06:51 -06:00
hristoterezov
05bfbf5620 fix(remotecontrol): Execute Reciever.enable only when the value is changed 2017-01-23 15:29:25 -06:00
hristoterezov
4af706bd83 style(keycode): Comment 2017-01-23 15:29:25 -06:00
hristoterezov
b62e4d5ee9 fix(remotecontrol): Log level 2017-01-23 15:29:25 -06:00
hristoterezov
bd98d661d3 ref(remotecontrol): Moves hangup logic to remote control module 2017-01-23 15:29:25 -06:00
hristoterezov
1f7c5529e9 fix(remotecontrol): Pin the controlled participant only on remote control permissions granted 2017-01-23 15:29:25 -06:00
hristoterezov
0453346cf4 ref(remotecontrol): Pass the largeVideoWrapper as parameter to remote control module 2017-01-23 15:29:25 -06:00
hristoterezov
15090243d0 fix(API): JS errors caused by remote control merge 2017-01-23 15:29:25 -06:00
hristoterezov
b22e3ee253 style(remotecontrol): Fix JSDoc for RemoteControlEvent 2017-01-23 15:29:25 -06:00
hristoterezov
e693554961 fix(remotecontrol): Logging 2017-01-23 15:29:25 -06:00
hristoterezov
0efca9a9a8 fix(remotecontrol): Fixing issues after peer review. 2017-01-23 15:29:25 -06:00
hristoterezov
5d22061c0a fix(remotecontrol): Handle on-stage participant changes 2017-01-23 15:29:25 -06:00
hristoterezov
84be7fd739 fix(remotecontrol): import of remote control 2017-01-23 15:29:25 -06:00
hristoterezov
5d269ad0aa fix(remotecontrol): Disable the keyboard shortcuts during remote control 2017-01-23 15:29:25 -06:00
hristoterezov
a4d5c41b3a feat(remotecontrol): UI for requesting permissions 2017-01-23 15:29:25 -06:00
hristoterezov
846fb9abb0 feat(remotecontrol): Implement requesting remote control permissions 2017-01-23 15:29:25 -06:00
hristoterezov
0f33e59e4d feat(remotecontrol): announce remotecontrol support 2017-01-23 15:29:25 -06:00
hristoterezov
896650d005 feat(remotecontrol): Implement basic remote control support 2017-01-23 15:29:25 -06:00
Saúl Ibarra Corretgé
6d6b5a7917 cleanup: Remove default Chrome extension ID
It makes for a bad first-time experience for users, since the desktop sharing
button will be visible, but it will never work.

Also get rid of the now deprecated `desktopSharingChromeMethod` option.
2017-01-23 15:21:28 -06:00
Любомир Маринов
db5010be9d Merge pull request #1261 from jitsi/clean-css-module-update
Stick to clean-css version 3.x.
2017-01-23 15:18:18 -06:00
damencho
be8860080c Fixes build.
Starting version 4.x clean-css is split into two packages and we should depend on clean-css-cli for versions 4 and above. Tested it and we have currently some problem with it like fonts and images got referenced under css folder. So sticking version to 3.x for now.
2017-01-23 14:35:26 -06:00
Lyubomir Marinov
42f124b0f6 Fix typo 2017-01-23 13:01:12 -06:00
Lyubomir Marinov
7249ababb7 Provide microphone and camera usage descriptions
iTunes Connect/TestFlight requires these now and is not satisfied with
empty values anymore.
2017-01-23 12:11:48 -06:00
Lyubomir Marinov
079be92468 Revert "[RN][iOS] Make universal builds"
This reverts commit b96ca538e4. While iPad
support is nice to have, we are not ready for a publish in App Store.
During the upload to iTunes Connect, a verification of the .ipa fails
because:

- app icons for iPad are missing:
  - 76x76 pixels in .png format for iOS versions >= 7.0,
  - 167x167 pixels in .png format for iOS versions supporting iPad Pro,
  - 152x152 pixels in .png format for iOS versions >= 7.0,
- orientations required for iPad Mutitasking are missing:
  - UIInterfaceOrientationPortraitUpsideDown.
2017-01-23 11:26:15 -06:00
Lyubomir Marinov
dda2a2feba Automatic Xcode project file fixes 2017-01-22 16:02:57 -06:00
Lyubomir Marinov
ae726cfdc0 react-native 0.40.0 2017-01-22 12:32:08 -06:00
Saúl Ibarra Corretgé
1a04e5a9af [RN] Use a translucent status bar on Android 2017-01-21 15:42:13 -06:00
Lyubomir Marinov
cac68dbaba [RN] Increment short app version from 1.1 to 1.2
Now that Apple have approved build 1.1.185 for release in the App Store,
the short app version needs to be incremented; otherwise, no new builds
can be uploaded to TestFlight and, respectively, for release in the App
Store.
2017-01-20 15:01:01 -06:00
Lyubomir Marinov
3c04634609 Simplify
Simplify the source code (with the idea that source code which does not
exist does not have to be maintained).

Additionally, apply modifications to have the source code comply with the coding
style.

Overall, prepare saghul:audio-mode for merge into jitsi:master.
2017-01-20 14:06:15 -06:00
Saúl Ibarra Corretgé
6c12681b9c [RN][iOS] Default to speaker for video conferences 2017-01-20 14:06:15 -06:00
Saúl Ibarra Corretgé
b1b5f3e6f0 Add CONFERENCE_WILL_JOIN action
It's fired before creating the conference with lib-jitsi-meet.
2017-01-20 14:06:15 -06:00
bbaldino
5baa167a08 Sdp overhaul (#1234)
* M1: device change now uses new flow.  fundamentally "works" but may be corner cases/side effects to other flows. haven't touched ffox yet

* M2: change toggle screenshare flows to use the new video replacement chain

* remove the old 'useVideoStream' and replace it with the new one

* use the new (and renamed back from the shim) 'dispose' method

* tweaks to work with the sdp overhaul changes in lib-jitsi-meet

* change the order in which we call dispose (to handle dispose being reverted back to how it is currently on master)

* move useAudioStream over to new flow

* restore useVideoStream doc

* handle rename JitsiConference::replaceStream -> JitsiConference::replaceTrack

* fix useAudioStream and useVideoStream to return a promise again
2017-01-19 12:46:10 -06:00
ibauersachs
343d17d19a Commit from translate.jitsi.org by user ibauersachs.: 99 of 298 strings translated (18 fuzzy). 2017-01-18 23:58:43 +00:00
ibauersachs
0370cc47fc Commit from translate.jitsi.org by user ibauersachs.: 140 of 298 strings translated (15 fuzzy). 2017-01-18 23:58:36 +00:00
ibauersachs
083fc955dc Commit from translate.jitsi.org by user ibauersachs.: 237 of 298 strings translated (17 fuzzy). 2017-01-18 23:58:30 +00:00
ibauersachs
a6e268f784 Commit from translate.jitsi.org by user ibauersachs.: 128 of 298 strings translated (14 fuzzy). 2017-01-18 23:58:23 +00:00
ibauersachs
7e0a9bc37c Commit from translate.jitsi.org by user ibauersachs.: 138 of 298 strings translated (14 fuzzy). 2017-01-18 23:58:16 +00:00
ibauersachs
f25bc818d7 Commit from translate.jitsi.org by user ibauersachs.: 298 of 298 strings translated (0 fuzzy). 2017-01-18 23:58:05 +00:00
ibauersachs
9beae22803 Commit from translate.jitsi.org by user ibauersachs.: 237 of 298 strings translated (17 fuzzy). 2017-01-18 23:57:58 +00:00
ibauersachs
920b0af269 Commit from translate.jitsi.org by user ibauersachs.: 298 of 298 strings translated (0 fuzzy). 2017-01-18 23:57:51 +00:00
ibauersachs
6c674bef2a Commit from translate.jitsi.org by user ibauersachs.: 129 of 298 strings translated (14 fuzzy). 2017-01-18 23:57:44 +00:00
ibauersachs
e74fbbb38b Commit from translate.jitsi.org by user ibauersachs.: 298 of 298 strings translated (0 fuzzy). 2017-01-18 23:57:29 +00:00
ibauersachs
fb3f916802 Commit from translate.jitsi.org by user ibauersachs.: 237 of 298 strings translated (17 fuzzy). 2017-01-18 23:57:21 +00:00
ibauersachs
c80d47d3dd Commit from translate.jitsi.org by user ibauersachs.: 192 of 298 strings translated (21 fuzzy). 2017-01-18 23:57:14 +00:00
ibauersachs
693ee1dcf8 Commit from translate.jitsi.org by user ibauersachs.: 237 of 298 strings translated (17 fuzzy). 2017-01-18 23:57:06 +00:00
Дамян Минков
640c0faff1 Merge pull request #1253 from jitsi/api_participant_count
Iframe API - participant count
2017-01-18 14:52:59 -06:00
hristoterezov
207ac47aa7 fix(iframe_api): s/getNumberOfParticipant/getNumberOfParticipants 2017-01-18 14:24:41 -06:00
hristoterezov
8844f83a59 feat(iframe_api): Add api.html to doc for example and testing purpose 2017-01-18 14:24:40 -06:00
hristoterezov
4a5a1cd5f4 fix(iframe_api): Remove enable/disable events 2017-01-18 14:24:21 -06:00
hristoterezov
09d63d38ab fix(iframe_api): prevents multiple execution of listeners per event 2017-01-18 13:24:30 -06:00
hristoterezov
6bf0f9b2ec feat(iframe_api): get number of participants 2017-01-18 13:20:32 -06:00
Lyubomir Marinov
f6fdd3ce70 Don't show watermarks in film strip-only mode even for guests 2017-01-17 21:54:17 -06:00
Lyubomir Marinov
d1f6679f2d [RN] Remove Crashlytics 2017-01-17 21:54:17 -06:00
Lyubomir Marinov
b8a6eb4768 Fix the checkbox to disable the Welcome page
Recently, we reimplemented the Welcome page in React. Unfortunately, we
broke the checkbox that enables/disables the Welcome page and it would
allow checking but wouldn't allow unchecking.
2017-01-17 16:20:43 -06:00
Lyubomir Marinov
6efad1348a Fix the display of watermarks in film strip-only mode
Recently, we reimplemented the watermarks in React. Unfortunately, we
didn't take into account film strip-only mode.

Additionally, we duplicated watermark-related source code on the Welcome
and Conference pages.
2017-01-17 16:20:13 -06:00
Lyubomir Marinov
eaed9db1e7 Name folders consistently 2017-01-17 08:53:23 -06:00
Lyubomir Marinov
4f8b7a934c Comply w/ coding style 2017-01-17 08:32:20 -06:00
Lyubomir Marinov
71c04936af Merge branch 'actions-rename' of https://github.com/saghul/jitsi-meet into saghul-actions-rename 2017-01-17 08:18:52 -06:00
Любомир Маринов
41da758946 Merge pull request #1242 from saghul/ipad
Enable universal builds
2017-01-16 19:56:29 -06:00
Saúl Ibarra Corretgé
acbfe5cb09 [RN] Keep device screen on while in a conference 2017-01-16 19:12:43 -06:00
Lyubomir Marinov
ba3d65c01f Fix d17cc9fa
A bug was discovered in d17cc9fa which would raise a failure to push
into the browser's history if a base href was defined. Fix the failure
by removing react-router. Anyway, the usage of react-router was
incorrect because the app must hit the server infrastructure when it
enters a room because the server will choose the very app version then.
2017-01-15 18:28:02 -06:00
Lyubomir Marinov
856732abab Preserve URLs 2017-01-15 17:46:34 -06:00
Lyubomir Marinov
5f21e4c5b6 Introduce Platform in React
React Native provides Platform.
2017-01-15 12:09:52 -06:00
Lyubomir Marinov
28b44cf67c Consistency 2017-01-15 12:09:02 -06:00
Дамян Минков
674b0e706c Merge pull request #1241 from jitsi/iframe_api_avatars
feat(iframeAPI): implement avatar change commands
2017-01-12 17:08:13 -06:00
Saúl Ibarra Corretgé
b96ca538e4 [RN][iOS] Make universal builds 2017-01-12 16:24:01 -06:00
Saúl Ibarra Corretgé
3266ace916 [RN][iOS] Set deployment target to 9.0
According to Apple iOS devices with versions < 9.0 are 6%.
https://developer.apple.com/support/app-store/
2017-01-12 16:20:03 -06:00
hristoterezov
f7ce8d028d feat(iframeAPI): implement avatar change commands 2017-01-12 15:53:17 -06:00
Дамян Минков
85e5b0fc31 Merge pull request #1240 from jitsi/ilmstriponly_ui
fix(filmstrip_only): Remove unrelated UI elements
2017-01-12 15:24:32 -06:00
hristoterezov
61f4b52a15 fix(filmstrip_only): Remove unrelated UI elements 2017-01-12 14:51:53 -06:00
Lyubomir Marinov
d17cc9fa86 Merge branch 'BeatC-BeatC-moving-conference-init-to-react-1' 2017-01-12 12:24:25 -06:00
Lyubomir Marinov
1f995cffe9 eslint 3.13.1, react 15.4.1, react-redux 5.0.2 2017-01-12 11:01:12 -06:00
Lyubomir Marinov
0936d54114 Merge branch 'master' into BeatC-BeatC-moving-conference-init-to-react-1 2017-01-12 10:37:36 -06:00
Lyubomir Marinov
0912dbf130 Remove duplication, simplify, comply with coding style 2017-01-12 10:37:01 -06:00
Дамян Минков
7dd566a591 Merge pull request #1238 from jitsi/filmstriponly_jserrors
fix(filmstrip_only): JS errors
2017-01-11 19:18:51 -06:00
hristoterezov
0f9bc766db fix(filmstrip_only): JS errors 2017-01-11 17:16:43 -06:00
Saúl Ibarra Corretgé
e71e6c5b79 Name Redux actions consistently
Redux actions which represent "commands" should be imperative, and those
representing events should use the past tense.
2017-01-11 13:11:11 -06:00
Lyubomir Marinov
4d5f82633b Merge branch 'master' into BeatC-BeatC-moving-conference-init-to-react-1 2017-01-10 13:07:19 -06:00
Lyubomir Marinov
2f01746c55 Remove duplication, simplify, comply with coding style 2017-01-10 13:06:18 -06:00
yanas
7ec5b34548 Merge pull request #1232 from jitsi/fix-adjust-layout
Fixes and adjustments of UI layout
2017-01-10 11:20:34 -06:00
yanas
1604fa6584 Fixes and adjustments of UI layout 2017-01-09 15:32:25 -06:00
Lyubomir Marinov
b67994235e Merge branch 'BeatC-moving-conference-init-to-react-1' of https://github.com/BeatC/jitsi-meet into BeatC-BeatC-moving-conference-init-to-react-1 2017-01-09 07:44:02 -06:00
Lyubomir Marinov
ee1358fae3 Merge branch 'saghul-no-welcome-autofocus' 2017-01-06 13:19:33 -06:00
Lyubomir Marinov
9fae5aa02f Merge branch 'no-welcome-autofocus' of https://github.com/saghul/jitsi-meet into saghul-no-welcome-autofocus 2017-01-06 13:19:12 -06:00
Lyubomir Marinov
a887beed3a [RN] Increment short app version from 1.0 to 1.1
Now that Apple have approved build 1.0.178 for release in the App Store,
the short app version needs to be incremented; otherwise, no new builds
can be uploaded to TestFlight and, respectively, for release in the App
Store.
2017-01-06 10:34:46 -06:00
Saúl Ibarra Corretgé
8a30d44042 [RN] Disable autofocus on the welcome screen
This prevents the keyboard from showing up right when the app opens.
2017-01-06 16:08:01 +01:00
Lyubomir Marinov
4fef8a3b79 [RN] Prevent unhandled JS errors from killing the process in Release 2017-01-05 15:06:41 -06:00
Ilya Daynatovich
ad9bdf4dd2 Fix url params stripping 2017-01-04 19:01:25 +02:00
hristoterezov
29001c3ab0 Merge pull request #1228 from jitsi/fix-menu-icon
Fix(RemoteVideo): Fixes remote video menu icon
2017-01-04 10:18:41 -06:00
yanas
a5387b054a Fix(RemoteVideo): Fixes remote video menu icon 2017-01-04 10:14:53 -06:00
Ilya Daynatovich
c2757469a5 Merge branch 'master' into BeatC-moving-conference-init-to-react-1 2017-01-04 17:53:13 +02:00
Ilya Daynatovich
ed1aa700d0 remove asterisk symbol from jsdoc 2017-01-04 17:47:27 +02:00
Ilya Daynatovich
58b5e1748f editions after rebase 2017-01-04 17:47:27 +02:00
Ilya Daynatovich
a99bbe67ab Clean up Conference component 2017-01-04 17:47:27 +02:00
Ilya Daynatovich
f53fb3d814 Introduced new actions and functions for app initialization 2017-01-04 17:46:47 +02:00
Ilya Daynatovich
e716c1738c Fix lint errs 2017-01-04 17:46:47 +02:00
Ilya Daynatovich
3190bfa058 Move redundant code from app.js 2017-01-04 17:45:52 +02:00
Ilya Daynatovich
c570b80d7b moved app initialization to react app 2017-01-04 17:45:52 +02:00
yanas
2f9887245a Merge pull request #1226 from jitsi/guests-watermark
Adds an option to show watermark only for guests.
2017-01-04 09:43:25 -06:00
damencho
6006333ccf Adds an option to show watermark only for guests. 2017-01-03 17:30:57 -06:00
Lyubomir Marinov
fd6c91715f Merge branch 'fix-mobile-toolbar-initial-timeout' 2017-01-03 15:27:22 -06:00
Lyubomir Marinov
a40b6a9df8 Merge branch 'master' into fix-mobile-toolbar-initial-timeout 2017-01-03 15:12:53 -06:00
yanas
d67b7c7f49 Fix(React/conference): Fix jsdocs 2017-01-03 15:09:52 -06:00
yanas
616ab0f635 Fix(mobile/conference): Move the initial call to the componentDidMount method 2017-01-03 15:06:47 -06:00
yanas
930e65da66 Fix(React/conference): Sets an initial toolbar view timeout 2017-01-03 14:53:52 -06:00
yanas
414a978b10 Merge pull request #1224 from jitsi/fix-close-page-redirect
Removes guest parameter when navigating to close page.
2017-01-03 14:37:54 -06:00
damencho
4ebefb17e9 Removes guest parameter when navigating to close page.
Using sessionStorage to save whether user is guest or not.
2017-01-03 14:15:32 -06:00
Дамян Минков
c46772015b Merge pull request #1217 from BeatC/fix-watermarks
Fixes issue with watermarks and interface configs.
2016-12-30 16:34:39 -06:00
Дамян Минков
677eef12dd Updates use of showJitsiWatermark. 2016-12-30 12:07:54 -06:00
hristoterezov
cd03b29ece Merge pull request #1219 from jitsi/guest-hint
Adds an option for guest only hint
2016-12-30 11:41:23 -06:00
damencho
63aa60f2d6 Adds an option for a hint message shown only to guests. 2016-12-30 10:59:21 -06:00
damencho
282defc54c Pass parameter to close page about current participant is it guest. 2016-12-30 10:58:21 -06:00
damencho
593de63d49 Adds utils to the close page and an id to the hint question div. 2016-12-30 10:19:58 -06:00
Ilya Daynatovich
5bb53ba036 Fix issue with watermarks 2016-12-30 13:34:03 +02:00
damencho
3c369a4c67 Fixes missing ssi for logging_config.js when meet served from jetty. 2016-12-29 11:18:39 -06:00
damencho
83aeb99b95 Commit from translate.jitsi.org by user damencho.: 202 of 298 strings translated (21 fuzzy). 2016-12-27 19:49:38 +00:00
ibauersachs
188d53ef94 Commit from translate.jitsi.org by user ibauersachs.: 298 of 298 strings translated (0 fuzzy). 2016-12-24 10:48:32 +00:00
ibauersachs
961cf7edbb Commit from translate.jitsi.org by user ibauersachs.: 298 of 298 strings translated (0 fuzzy). 2016-12-23 13:16:05 +00:00
damencho
2c5a5816c4 Adds some accessibilityLabels that can be used for testing. 2016-12-22 17:28:57 -06:00
yanas
96a6f2dfd6 Merge pull request #1212 from jitsi/react-native-ui-modifications-more
React native ui modifications
2016-12-22 14:41:43 -06:00
Дамян Минков
35be17cfc9 Merge pull request #1208 from jitsi/caps
Remove strophe-caps dependancy
2016-12-22 11:13:08 -05:00
yanas
8d90a7d091 Fix(react): Fixes black border on text input in welcome page 2016-12-21 18:09:30 -06:00
yanas
4a71c2655a Fix(react): Make in call buttons appear by default 2016-12-21 18:07:32 -06:00
yanas
043fd6e259 Fix(React): Modifies thumbnail icon positions and layout 2016-12-21 16:32:56 -06:00
yanas
7722e14117 Adjusts the size of secondary toolbar button 2016-12-21 15:00:24 -06:00
yanas
5e377d3694 Fix underlining on welcom text input on android 2016-12-21 15:00:24 -06:00
yanas
f512583973 fix(react-toolbars): Adjusts some styles and icons in mobile toolbars 2016-12-21 15:00:24 -06:00
yanas
5fce7f6ba2 Updates the react native font. 2016-12-21 15:00:24 -06:00
yanas
dfe1666530 feat(fonts): Adds a new icon to the font 2016-12-21 15:00:24 -06:00
hristoterezov
41f0069a22 fix(caps): remove strophe-caps dependancy 2016-12-19 14:58:18 -06:00
Lyubomir Marinov
9f332ffcec [iOS] Synthesize IPv6 addresses 2016-12-17 04:03:10 -06:00
Lyubomir Marinov
891bd7f346 react-redux 5.0.1, babel-loader 6.2.10, eslint 3.12.2, eslint-plugin-react-native 2.2.1 2016-12-15 21:01:44 -06:00
Lyubomir Marinov
4810249301 Simplify. Comply w/ coding style. 2016-12-15 21:00:06 -06:00
Ilya Daynatovich
984a6519fc Move welcome page logic from jquery to react 2016-12-15 07:55:43 -06:00
Ilya Daynatovich
986f13ef1a Made editions in PR 2016-12-15 07:54:17 -06:00
Ilya Daynatovich
83dd56d34c Move roomname generator to React 2016-12-14 23:59:02 -06:00
Paweł Domas
b646e8d213 Merge pull request #1197 from jitsi/reload_on_error
Reload when resource fails to load
2016-12-13 19:32:55 -06:00
yanas
2785e76e23 fix(index.html): minor variable optimisation 2016-12-13 18:43:45 -06:00
yanas
c5cacd7955 fix(index.html): UI adjustments 2016-12-13 18:19:49 -06:00
paweldomas
62532b5879 feat(index.html): add safeguards to the reload delay value
If the page reload value is not within specific range it will be
adjusted to a default of 10 seconds.
2016-12-13 13:57:11 -06:00
paweldomas
7e22f9c57b feat(index.html): hide the missing filename by default 2016-12-13 13:53:28 -06:00
paweldomas
d9017b2665 feat(index.html): update "failed to load the page" msg
Also adds a link to reload manually.
2016-12-13 07:33:27 -06:00
Lyubomir Marinov
4571a4c048 Simplify Redux reducer source code 2016-12-13 03:15:32 -06:00
Lyubomir Marinov
80685395ed [RN] Room lock 2016-12-13 03:15:32 -06:00
Lyubomir Marinov
38b9819b68 Fix/remove Redux state mutation 2016-12-13 03:15:32 -06:00
paweldomas
a4dcf5f8df feat(index.html): reload when resource fails to load
The page will be reloaded if any of the mandatory scripts/resources
fails to load. The reload will be delayed with exponential backoff
starting from 2 seconds. The retry attempt counter is passed as
'rCounter' query attribute.
2016-12-12 15:53:07 -06:00
Lyubomir Marinov
9a49a01713 [RN] Room lock button 2016-12-12 13:49:45 -06:00
hristoterezov
8c3fb54d3d Merge pull request #1194 from bgrozev/disable-suspend-video
config: Disable suspend video by default.
2016-12-12 13:07:00 -06:00
Boris Grozev
7707e384c5 config: Disable suspend video by default. 2016-12-12 10:37:36 -06:00
Lyubomir Marinov
a09b8ce56e React Native 0.39.2 2016-12-11 22:21:51 -06:00
Lyubomir Marinov
7ecafb1e69 [RN] Join password-protected rooms 2016-12-11 22:21:51 -06:00
Lyubomir Marinov
9f93ce86be [RN] Simplify the source code 2016-12-11 22:21:51 -06:00
Lyubomir Marinov
a5773f1d0b [RN] Links to Send feedback and Privacy (policy) 2016-12-11 22:21:51 -06:00
Lyubomir Marinov
d72813340e Fix the (visual) style of toggle camera facing mode 2016-12-11 22:21:51 -06:00
Lyubomir Marinov
daf56455a5 Use Symbol for Redux action types to prevent conflicts 2016-12-11 22:21:51 -06:00
Дамян Минков
f58d7fc3cc Adds download links to readme. 2016-12-09 17:45:02 -06:00
Illia Daynatovich
4584d89c43 Rewrite with ES6 2016-12-08 19:21:29 -06:00
Illia Daynatovich
1cc2b388a2 webpack-dev-server 2016-12-08 19:21:29 -06:00
Lyubomir Marinov
51a1a7ed22 [RN] Clarify, simplify the source code 2016-12-07 16:08:35 -06:00
Lyubomir Marinov
99c2b60a1d [RN] Catch Promise rejection 2016-12-07 16:06:16 -06:00
Lyubomir Marinov
de5cd53f85 [RN] Allow uppsercase letters in room names 2016-12-07 16:04:52 -06:00
Lyubomir Marinov
f027a8f74f [RN] Use fetch instead of XHR 2016-12-07 16:00:54 -06:00
damencho
7d81ec4d86 Simplifies dependencies, removes possible circular dependency. 2016-12-07 11:14:20 -06:00
hristoterezov
a6fed4da65 Merge pull request #1184 from jitsi/separate-disconnect-overlay
Separate disconnect overlay
2016-12-07 10:44:56 -06:00
yanas
ce42d3ab5d Fixes unnecessary parameter 2016-12-07 10:24:37 -06:00
Lyubomir Marinov
d939ae5fb2 Rename the package of the Android app 2016-12-06 17:23:39 -06:00
yanas
642fa8d6f8 Fixes some issues pointed out from hristoterezov 2016-12-06 17:05:32 -06:00
Lyubomir Marinov
8f02b9249e Clarify error message with details 2016-12-06 16:49:38 -06:00
Lyubomir Marinov
7487684301 React Native 0.39.0 2016-12-06 15:52:53 -06:00
Lyubomir Marinov
02e3f6b3a2 Reduce the complexity of the source code 2016-12-06 15:42:06 -06:00
Lyubomir Marinov
727df551e6 Merge branch 'android-version' 2016-12-06 14:26:50 -06:00
damencho
e5dc7058c1 Adds android version variable.
The variables in gradle.properties can be overridden on command line like: -Pversion=1.
2016-12-06 13:57:38 -06:00
yanas
c9488d5ee9 Separate disconnect overlay. 2016-12-05 23:38:30 -06:00
yanas
4720088039 Merge pull request #1182 from jitsi/reduce-app.bundle.min.js
Reduce the impact of aui, aui-experimental, and jQuery-Impromptu on t…
2016-12-05 18:00:17 -06:00
Lyubomir Marinov
96a18ab2d5 [RN] Change 'Privacy Policty' and 'Terms of Service' to 'Terms and Conditions' 2016-12-05 11:33:37 -06:00
Lyubomir Marinov
137aace970 Merge branch 'fix_ring_overlay' 2016-12-04 13:29:31 -06:00
Lyubomir Marinov
4a8eca2020 Reduce the impact of aui, aui-experimental, and jQuery-Impromptu on the size of the minimized app bundle 2016-12-03 19:26:19 -06:00
hristoterezov
23efa7827c fix(filmstrip): JS error when the ringoverlay is shown 2016-12-02 16:23:12 -06:00
hristoterezov
fd24595baf Merge pull request #1180 from gerfigna/patch-2
Update api.md
2016-12-02 11:56:39 -06:00
Germán Figna
2331982e33 Update api.md
Fix videoConferenceJoined and videoConferenceLeft event names
2016-12-02 17:55:19 +01:00
Lyubomir Marinov
683fc84a28 Webpack's loaders are devDependencies 2016-12-02 10:11:47 -06:00
Illia Daynatovich
a0f5e5c8f8 Consistent spacing, closing in index.html 2016-12-02 09:11:06 -06:00
bgrozev
c9af2b956c Updates the manual installation docs
Adds the --host argument to the jicofo command, as suggested by exs on irc.
2016-12-01 18:11:41 -06:00
yanas
75b3bc6190 Merge pull request #1176 from jitsi/net_or_infra
Add 'isNetworkFailure' argument to PageReloadOverlay
2016-12-01 16:57:39 -06:00
paweldomas
6c716bcbb1 fix(conference.js): handle CONNECTION_DROPPED_ERROR 2016-12-01 15:55:00 -06:00
paweldomas
44beed6216 feat: distinguish between network and infra... failure 2016-12-01 11:38:44 -06:00
paweldomas
2352811c20 chore(package.json): use fixed version of Strophe
There was functionality added to lib-jitsi-meet that depends on
particular version of Strophe. It could be possibly broken without
testing the update.
2016-12-01 11:38:44 -06:00
Lyubomir Marinov
c1df375af4 Extend ./react/.eslintrc.js from ./.eslintrc.js 2016-12-01 08:30:35 -06:00
Дамян Минков
e8c631de01 Merge pull request #1174 from jitsi/fix-disabled-welcome-page
Fix disabled Welcome page broken with the introduction of React
2016-11-30 21:49:25 -06:00
Lyubomir Marinov
bdc67201e2 Fix disabled Welcome page broken with the introduction of React
The React-based rewrite looks whether there's a room name (in the
window's location) in order to choose between WelcomePage and
Conference. But app.js expects Conference to be rendered before it
builds a room name if WelcomePage is disabled and there's no room name.
A quick and dirty workaround is to render Conference within WelcomePage
so that the rendered result closely resembles index.html before the
React-based rewrite.
2016-11-30 19:54:09 -06:00
Lyubomir Marinov
0db33bb45c React propTypes as static class properties 2016-11-30 19:53:40 -06:00
Дамян Минков
9f26270a98 Merge pull request #1169 from jitsi/page_reload_reason
Log more details on page reload
2016-11-30 15:25:09 -06:00
paweldomas
df721cbd2e feat(analytics): add reason as label to page reload event 2016-11-30 14:30:44 -06:00
hristoterezov
8745efb81f Merge pull request #1158 from jitsi/log_collector
Log collector
2016-11-30 13:07:18 -06:00
yanas
e56f1a9ded Merge pull request #1167 from jitsi/fix_anonymous_domain
Fix the UI when anonymous domain auth is in use
2016-11-30 10:51:24 -06:00
Lyubomir Marinov
52fbb8f02c [RN] Fix React.PropTypes warning 2016-11-30 10:06:29 -06:00
Lyubomir Marinov
a1639b67a5 [RN] Don't display background colors underneath text on WelcomePage 2016-11-30 10:00:59 -06:00
paweldomas
3475ad4674 ref(LogCollector): adapts to caching in LogCollector 2016-11-30 07:38:39 -06:00
damencho
685d117a91 Fixes custom cert and key files for apache config. 2016-11-29 23:54:19 -06:00
damencho
e51f791ab0 Configures to use apache when this is the available web server. 2016-11-29 23:11:15 -06:00
yanas
0f2ba1cefe refactor(UIUtils): merges show and hide functions and cleans visibility setting 2016-11-29 15:07:18 -06:00
Lyubomir Marinov
1f457dfca5 Hyperlinks to legalese such as Privacy Policy and Terms of Service 2016-11-29 14:30:58 -06:00
Paweł Domas
841050953f Merge pull request #1172 from bgrozev/enable-tab-sharing
feat: Enables by default tab sharing for chrome.
2016-11-29 14:08:38 -06:00
Дамян Минков
c6296821c0 Merge pull request #1164 from gerfigna/patch-1
Update api.md. There is still work to be done, cause handling parameters in executeCommand is not currently correct and needs fixing. But for now displayname is the only command that requires a parameter.
2016-11-29 13:18:55 -06:00
paweldomas
7c8ca45d9a ref(LogCollector): extract JitsiMeetLogStorage 2016-11-29 11:30:37 -06:00
Boris Grozev
142f6e4518 feat: Enables by default tab sharing for chrome. 2016-11-29 11:30:02 -06:00
Lyubomir Marinov
f72e7ffbc2 Fix ESLint errors 2016-11-28 20:07:10 -06:00
Lyubomir Marinov
111b6e1c27 React Native 0.38.0, React 15.4.1 2016-11-28 20:07:10 -06:00
Дамян Минков
4add2d0590 Merge pull request #1168 from jitsi/exclude_build_dir
Add 'build' dir to jshintignore
2016-11-28 16:16:38 -06:00
Дамян Минков
cb0f7417b6 Merge pull request #1166 from jitsi/fix-reload-overlay-layout
fix(PageReloadOverlay):Basic layout fix
2016-11-28 16:00:35 -06:00
paweldomas
06eb7c6109 fix(jshintignore): exclude 'build' dir 2016-11-28 15:48:07 -06:00
damencho
4d0701cfda Fixes build. Wrong changelog file. 2016-11-28 14:18:23 -06:00
Дамян Минков
86bce1e5f6 Merge pull request #1152 from jitsi/deb-update
Updates debian packaging.
2016-11-28 13:45:51 -06:00
damencho
8da0d3a1f1 Removes dependencies to other components.
Now the web app can be installed separately from jicofo and jitsi-videobridge, or can be installed on machine running nginx or apache. Currently only nginx will be configured and apache config is left to user. Later we can add and the apache config. Renames jitsi-meet to jitsi-meet-web (just the web content) and jitsi-meet-web-config (configuring jetty, nginx or apache). A new jitsi-meet package will be introduced, a meta package depending on jicofo, jvb and the current packages.
2016-11-28 13:13:08 -06:00
hristoterezov
f32438b219 Merge pull request #1161 from jitsi/pinning-local-not-signal-unpin
Sending unpin after clicking local video and unpinning remote.
2016-11-28 12:06:56 -06:00
paweldomas
0238a10a4b fix(MessageHandler): hide the close button when 'persistent' 2016-11-28 11:05:18 -06:00
paweldomas
6669a96fd8 fix(Toolbar.js): hide recording and SIP buttons from the start 2016-11-28 11:05:18 -06:00
paweldomas
09406bfbfc fix(Toolbar): move login buttons to Profile
Authentication buttons no longer belong to the Toolbar.
2016-11-28 11:05:18 -06:00
paweldomas
51da40e90c ref(UIUtil): add showOrHideElement 2016-11-28 11:05:18 -06:00
paweldomas
52847bd28d fix(conference): crash with anonymous domain config 2016-11-28 11:05:18 -06:00
yanas
835d3c6a25 fix(PageReloadOverlay):Basic layout fix 2016-11-28 10:08:47 -06:00
Germán Figna
00e6e98a61 Update api.md 2016-11-24 11:34:24 +01:00
Lyubomir Marinov
6d90adcdf6 Fix make failure caused by npm link 2016-11-24 02:21:21 -06:00
Ilya Daynatovich
06d2fb0aca Optimize React in production 2016-11-24 02:21:21 -06:00
Ilya Daynatovich
c3428e8213 Split React components out of index.html 2016-11-24 02:21:02 -06:00
hristoterezov
57b0736ebb Merge pull request #1160 from jitsi/fix-unpinning-local-dominant-speaker
Fixes unpinning local user which is dominant speaker.
2016-11-23 17:40:47 -06:00
damencho
6211566c0c Sending unpin after clicking local video and unpinning remote.
If we:
 - pin a remote and click it, unpin is signalled.
 - pin a remote and the click another remote, the new one is pinned and signalled.
 - pin a remote and then click local. UI pins local, but unpinning remote is not signaled, fix addressed with this commit.
 - pin/unpin local, nothing is signalled.
2016-11-23 17:02:24 -06:00
Ilya Daynatovich
48bb427f71 The Makefile file format requires tab characters 2016-11-23 15:54:03 -06:00
hristoterezov
56f15356c7 Merge pull request #1159 from jitsi/non-focusable-close-toastr
Makes close button non-focusable.
2016-11-23 15:41:11 -06:00
damencho
8e6fd0ca95 Fixes unpinning local user which is dominant speaker.
It was not switching and staying on local video on unpinning, after change the last shown video will be used to switch to it.
2016-11-23 15:35:03 -06:00
damencho
b5dfc2a520 Makes close button non-focusable.
Prevents the close button to take focus while user clicks tab in the page, which will privent the toast to be closed.
2016-11-23 14:48:15 -06:00
Дамян Минков
4900fe020d Merge pull request #1156 from BeatC/fix-popover
Fix popover
2016-11-23 12:52:50 -06:00
paweldomas
94bd6bc330 feat(logging_config): add "disableLogCollector" option 2016-11-23 11:32:58 -06:00
paweldomas
36bcc6831b feat: use LogCollector to capture JS console logs 2016-11-23 11:32:58 -06:00
paweldomas
76c89845a8 feat: add logging config 2016-11-23 11:32:58 -06:00
paweldomas
b58f1cdd16 use logger instead of console 2016-11-23 11:32:55 -06:00
Ilya Daynatovich
141c64cd00 Add new variable 2016-11-23 12:32:59 +02:00
Ilya Daynatovich
51b802da84 fix problem with popover 2016-11-23 12:27:34 +02:00
yanas
71c27f308c Merge pull request #1155 from jitsi/removes-click-listeners
Removes click handlers when popup is hidden.
2016-11-22 17:33:30 -06:00
damencho
75b9adf01b Updates comments. 2016-11-22 17:31:01 -06:00
damencho
a079914603 Removes click handlers when popup is hidden. 2016-11-22 17:06:19 -06:00
yanas
4d3ca4a85a Merge pull request #1148 from jitsi/analytics
feat(Analytics): Multiple analytics handlers support
2016-11-22 13:53:02 -06:00
Lyubomir Marinov
afa1d5423c Merge branch 'prepare-for-react-1' 2016-11-21 21:00:13 -06:00
Ilya Daynatovich
766eb94c7d Prepare for React: Use Haste resolver for Web
In preparation for and as another early step in rewriting the Web
version of jitsi-meet using React, use Haste resolver which is able to
distinguish among platform-independent files, Web-specific and
mobile-specific ones.

Additionally, (1) make sure that Babel is capable of understanding React
files and (2) introduce React as a dependency.

The purpose is to repeatedly take small steps towards our goal and merge
them before they get in conflict with the separate ongoing advancement
of the Web version of jitsi-meet.
2016-11-21 20:26:50 -06:00
Дамян Минков
ad6e793615 Merge pull request #1146 from jitsi/adorable-io-avatars
fix: replace robohash avatars with adorable io
2016-11-21 10:00:57 -06:00
Paweł Domas
d900d3c3fd Merge pull request #1149 from jitsi/ss_resize
Fixes issue with not resizing properly if SS is on and the filmstrip is hidden
2016-11-18 12:42:11 -06:00
hristoterezov
7f315ef105 fix(VideoLayout): Issue with not resizing properly if SS is on and the filmstrip is hidden 2016-11-18 11:26:33 -06:00
hristoterezov
dc0a7e7628 feat(Analytics): Multiple analytics handlers support 2016-11-16 16:36:32 -06:00
yanas
6d1f42bf30 Merge pull request #1115 from jitsi/remove_css_classes
Removes unused css classes
2016-11-16 13:00:26 -06:00
yanas
c26b144f0d Merge pull request #1144 from kkrisstoff/chat-animation-fix
Chat animation fix
2016-11-16 12:45:40 -06:00
yanas
752f4dd5de Merge pull request #1141 from kkrisstoff/404-link-color
link class added
2016-11-16 11:24:48 -06:00
yanas
693ebbea9d Merge pull request #1143 from BeatC/visual-problems
Fix some ui bugs
2016-11-16 11:23:29 -06:00
yanas
b24a54aab2 fix: replace robohash avatars with adorable io 2016-11-16 11:06:25 -06:00
Konstantyn Pahsura
00aee89709 doc added 2016-11-16 14:09:22 +02:00
Дамян Минков
a5f243e18d Merge pull request #1142 from jitsi/fix-ff-desktop-sharing-message
fix: Firefox desktop sharing extension required dialog
2016-11-15 13:48:17 -06:00
yanas
d05ff9b4ee fix: Firefox desktop sharing extension required dialog 2016-11-15 12:41:24 -06:00
Konstantyn Pahsura
a67087b6de focus for chat changes 2016-11-15 20:18:40 +02:00
Ilya Daynatovich
e2ea16ea3f Fix some ui bugs 2016-11-15 16:37:09 +02:00
yanas
5098b64666 Merge pull request #1137 from BeatC/thumbnail-avatars
Thumbnail avatars
2016-11-14 17:47:59 -06:00
hristoterezov
66fbc28385 Merge branch 'kkrisstoff-add/tip-randomiser' 2016-11-14 15:02:58 -06:00
hristoterezov
4bcd75f15c refactor(close_pages): Refactor the close pages. 2016-11-14 15:02:27 -06:00
Konstantyn Pahsura
da6af88910 fixes and changes 2016-11-14 15:02:27 -06:00
Konstantyn Pahsura
1a91f4953b tip randomiser added 2016-11-14 15:02:27 -06:00
yanas
9a0d28720d Merge pull request #1139 from BeatC/FIX-adjust-branding1
Fix visual bugs in sidebar
2016-11-14 14:26:21 -06:00
hristoterezov
5b6956e25b Merge pull request #1101 from jitsi/stop_media_when_xmpp_drops
Stop the media when XMPP connection is dropped
2016-11-14 13:06:53 -06:00
Lyubomir Marinov
fd51108ae3 [iOS] Remove unnecessary CODE_SIGN_IDENTITY 2016-11-14 08:44:29 -06:00
Lyubomir Marinov
73a2eca51c [iOS] Strip unwanted architectures from embedded frameworks 2016-11-14 08:32:47 -06:00
Ilya Daynatovich
9bc24e1caa Fix aligning of indicator icon; Update logic for dynamically change of thumb indicators via font-size 2016-11-14 12:45:28 +02:00
Konstantyn Pahsura
3fc02bf6c2 link class added 2016-11-14 12:42:01 +02:00
Ilya Daynatovich
3bd4f1d5d8 Updated layout 2016-11-14 11:09:07 +02:00
Ilya Daynatovich
f3dbeea091 Make filmstrip indicators to resize dynamically 2016-11-14 11:09:07 +02:00
Ilya Daynatovich
d2ef94a7eb Fix problem with hint 2016-11-14 11:02:11 +02:00
Ilya Daynatovich
1d1d8defda Updated calculation of offset 2016-11-14 11:01:50 +02:00
Ilya Daynatovich
d0127b879d fixed dropdown colors 2016-11-14 11:01:50 +02:00
Ilya Daynatovich
cbc6943305 work on colors 2016-11-14 11:01:50 +02:00
Maxim Voloshin
9124aa2c87 Adjusted CSS for side toolbar elements 2016-11-14 11:01:50 +02:00
Lyubomir Marinov
8817f0c53d [iOS] Prepare for App Store release 2016-11-13 18:45:40 -06:00
Lyubomir Marinov
e4f9c17f8a [iOS] Prepare for App Store release 2016-11-13 18:27:23 -06:00
yanas
686ee1111a Merge pull request #1129 from BeatC/make-identical-text-input
Make identical text input
2016-11-11 15:45:46 -06:00
bgrozev
4b11767ac5 Merge pull request #1140 from jitsi/fix-desktop-sharing-screen-size
fix: desktop streming screen size
2016-11-11 13:53:39 -06:00
yanas
5545c0d905 fix: desktop streming screen size 2016-11-11 13:26:07 -06:00
bgrozev
611edf7e34 Merge pull request #1134 from jitsi/cosmetic-changes
Comment and empty lines removed
2016-11-11 13:18:41 -06:00
Lyubomir Marinov
7a37d70fb6 React Native 0.37.0 2016-11-11 11:57:25 -06:00
yanas
b2577090bd Merge pull request #1135 from BeatC/fix-js-from-styles-editions
Editions to "clean css from js"
2016-11-11 10:18:49 -06:00
Ilya Daynatovich
5b0777d4db Made inputs identical 2016-11-11 17:22:47 +02:00
Ilya Daynatovich
12c1574f07 renamed files 2016-11-11 17:13:18 +02:00
Ilya Daynatovich
5623a06996 renamed input-control block to form-control 2016-11-11 17:13:18 +02:00
Ilya Daynatovich
148960c6d2 made editions 2016-11-11 12:27:29 +02:00
yanas
ff8c6690ef Comment and empty lines removed 2016-11-10 17:27:19 -06:00
yanas
c926e95822 Merge pull request #1133 from jitsi/fix-tip-text-close-page
Modifies tip text in close page
2016-11-10 17:24:43 -06:00
yanas
0a28dd0cd3 Modifies tip text in close page 2016-11-10 17:02:34 -06:00
yanas
8caae4bfde Merge pull request #1111 from BeatC/FIX-clean-js-from-styles-1
Fix clean js from styles 1
2016-11-10 15:40:07 -06:00
yanas
a67c5a8dc7 Merge pull request #1108 from bgrozev/restrict-eslint-versions
chore: Only uses jslint 3+
2016-11-10 14:45:29 -06:00
yanas
cf38fde207 Updates to >= to match versions of 3+ 2016-11-10 14:20:30 -06:00
hristoterezov
4549b766f5 Merge pull request #1131 from jitsi/suspended-detection
Suspended detection
2016-11-10 13:45:14 -06:00
yanas
45126d4f3d Merge pull request #1132 from jitsi/calculate-correct-size-for-thumbnails
Calculate correct size for thumbnails
2016-11-10 13:17:32 -06:00
damencho
82926ef8c6 Detects suspended event, stops local video and shows overlay.
Also removes device change listener, cause when PC wakeups devices will be reconnected and we can try open the local video again.
2016-11-10 13:17:23 -06:00
yanas
42604971dc Merge pull request #1125 from BeatC/small-avatar-images
Fixed problem with resizing thumb avatars
2016-11-10 13:12:03 -06:00
yanas
95fcf5bae5 Change method name to fit better its purpose 2016-11-10 11:14:31 -06:00
Ilya Daynatovich
34acadc3b5 Rename method 2016-11-10 11:14:31 -06:00
Ilya Daynatovich
d3df082e3d Fix thumbnail overflow 2016-11-10 11:13:31 -06:00
Yana Stamcheva
fe7e9f333f [iOS] Fix launch screen text 2016-11-10 10:48:30 -06:00
Дамян Минков
92901e09e1 Merge pull request #1128 from BeatC/fix-toggle-filmstrip-shortcut
Moved keyboard initialization to filmstrip toolbar
2016-11-10 10:30:59 -06:00
Ilya Daynatovich
128b301a39 Fix the tests 2016-11-10 14:45:42 +02:00
Ilya Daynatovich
1b1b9475a4 Clean up js from styles 2016-11-10 13:32:12 +02:00
Ilya Daynatovich
5aff96e3b7 Updated in videolayout 2016-11-10 13:32:12 +02:00
Ilya Daynatovich
fb4e9b3c6d Work on fixing the tests 2016-11-10 13:32:12 +02:00
Ilya Daynatovich
a8a6b38c28 Updated method for showing/hiding elements 2016-11-10 13:32:12 +02:00
Maxim Voloshin
68ab87cc0d Hide DOM elements using css class 2016-11-10 13:32:12 +02:00
Ilya Daynatovich
986c29ca5d updated filmstrip handler 2016-11-10 12:18:33 +02:00
Yana Stamcheva
d7fc20b607 [iOS] Center launch screen text 2016-11-09 19:58:48 -06:00
damencho
96b280668d Adds suspend overlay. 2016-11-09 16:32:09 -06:00
Lyubomir Marinov
66b7404961 [iOS] Try to fix the launch screen 2016-11-09 15:06:07 -06:00
hristoterezov
7f3323f7c0 Merge pull request #1130 from jitsi/fix-stopping-sharedvideo
Stops player update before sending stopping of shared video.
2016-11-09 14:20:38 -06:00
damencho
e34d86b485 Stops player update before sending stopping of shared video.
We used to stop player updates on self presence received, so between stop and self presence we can send a playing update which will provoke adding the video again to other participants.
2016-11-09 12:42:47 -06:00
Lyubomir Marinov
34ea330aa3 [iOS] Try to fix the launch screen
The launch screen appears not centered and/or clipped on certain
devices. Unfortunately, I cannot reproduce it when I deploy the app to
devices and Simulator from Xcode 8.1. It may (or may very well not) be
that the Xcode version matters and the enterprise build server does
appear to use an older Xcode version.
2016-11-09 12:41:20 -06:00
Дамян Минков
70c3c1a21c Merge pull request #1102 from jitsi/limit_display_name
Limit long display names
2016-11-09 10:51:46 -06:00
hristoterezov
98d3755859 Merge pull request #1121 from jitsi/fix-two-panels-shown
Hides all side panels before showing new one.
2016-11-09 10:42:49 -06:00
hristoterezov
a4a1579c84 style(conference): Rename MAX_DISPLAYNAME_LENGTH 2016-11-09 10:22:43 -06:00
Ilya Daynatovich
20c6dba599 Moved keyboard initialization to filmstrip toolbar; Replaced toggle filmstrip button from extended toolbar 2016-11-09 12:41:23 +02:00
Lyubomir Marinov
056fc64f7a Try to fix the enterprise build of the iOS app
LaunchScreen.xib compiles locally with Xcode 8.1 but the enterprise
build fails. A possibility is that the enterprise build machine is
running an older Xcode version.
2016-11-08 18:14:43 -06:00
Yana Stamcheva
cb0ec3f702 [iOS] App icon(s) 2016-11-08 17:47:23 -06:00
yanas
084929f875 Merge pull request #1122 from jitsi/thumbnail-calculations
Thumbnail calculations
2016-11-08 17:40:46 -06:00
Yana Stamcheva
10f3f01da8 [iOS] Launch screen 2016-11-08 16:12:20 -06:00
Дамян Минков
1f75683581 Merge pull request #1055 from BeatC/incorrect-password-hint
Incorrect password hint
2016-11-08 14:29:06 -06:00
bgrozev
29b86a7fe3 Merge pull request #1126 from jitsi/fix-thumbnail-menu-css-class
fix: Use a separate css class for thumbnail menu
2016-11-08 12:20:55 -06:00
yanas
bb80bf4144 fix: Use a separate css class for thumbnail menu 2016-11-08 11:47:22 -06:00
yanas
92df64f706 fix: Adds a separate css class for thumbnail menu 2016-11-08 11:45:28 -06:00
Yana Stamcheva
fc3e0147e0 [Android] Launcher icons 2016-11-08 10:38:13 -06:00
Дамян Минков
b2d2209236 Merge pull request #1123 from bgrozev/log-pinned
Logs pinned/unpinned events
2016-11-08 10:16:01 -06:00
Ilya Daynatovich
f4e6dceaa4 Return Impormptu api when create dialog 2016-11-08 17:16:00 +02:00
Ilya Daynatovich
f09a9be523 Fixed problem with resizing thumb avatars 2016-11-08 13:36:43 +02:00
Ilya Daynatovich
2b08950294 Fix the tests 2016-11-08 13:18:10 +02:00
Ilya Daynatovich
62713bf87c Editions in PR 2016-11-08 13:18:10 +02:00
Ilya Daynatovich
7a2eca3706 fix reopening require pass dialog 2016-11-08 13:18:10 +02:00
Ilya Daynatovich
22b7142159 Add select input after incorrect input 2016-11-08 13:18:10 +02:00
Ilya Daynatovich
cba5528478 Move error color to theme 2016-11-08 13:18:10 +02:00
Ilya Daynatovich
5e8c5b3ce4 Add JSDoc 2016-11-08 13:18:10 +02:00
Ilya Daynatovich
d4df6f2dda Got rid of direct usage of room locker 2016-11-08 13:18:10 +02:00
Ilya Daynatovich
257bb49c52 Add Require password dialog 2016-11-08 13:18:09 +02:00
Boris Grozev
6740b9edf6 feat: Logs pin/unpin events via analytics. 2016-11-07 22:13:21 -06:00
Boris Grozev
cf241effbf style: Fixes indentation, spelling. 2016-11-07 21:23:33 -06:00
Boris Grozev
c0c198098b style: Renames variables, adds a FIXME. 2016-11-07 20:47:43 -06:00
Boris Grozev
ac0ee771ed docs: Adds a FIXME. 2016-11-07 20:45:52 -06:00
Boris Grozev
0ca9389e4b cleanup: Simplify code. 2016-11-07 20:39:28 -06:00
Boris Grozev
9910caf29f docs: Fix some documentation. 2016-11-07 20:38:14 -06:00
yanas
78dbaa9b21 Revert wrongly removed comment 2016-11-07 17:00:50 -06:00
yanas
5c956de99e Merges changes with latest master. 2016-11-07 16:50:08 -06:00
damencho
91340a5268 Hides all side panels before showing new one. 2016-11-07 14:30:02 -06:00
bgrozev
38e44440d0 Merge pull request #1114 from jitsi/fix_page_reload_log
Log the page reload from one place
2016-11-06 11:09:56 -06:00
yanas
02495e3b31 Merge pull request #1116 from jitsi/edit-displayname-overlap
Adds a property to hide display name and disable update view.
2016-11-05 10:19:31 -05:00
bgrozev
3360c62392 Merge pull request #1117 from jitsi/directory-name-casing-fix
Fixes casing of the tokendata directory.
2016-11-04 18:32:46 -05:00
Emil Ivov
05e9dfca92 Fixes casing of the tokendata command. 2016-11-04 17:41:16 -05:00
damencho
510c650b7b Adds a property to hide display name and disable update view.
Adds a property to hide display name and disable update view in SmallVideo. Localvideo hides displayName and disabled update view while users is editing its name and resumes normal behaviour when editing finishes.
2016-11-04 17:02:30 -05:00
hristoterezov
c41c219206 fix(Thumbnails): removes unused css classes 2016-11-04 15:24:05 -05:00
Lyubomir Marinov
4d335e086b Reduce the number of unnecessary Redux state changes 2016-11-04 13:28:47 -05:00
Lyubomir Marinov
3fa62c3757 Fix thumbnail reordering
Don't use Array.prototype.sort() because (1) it operates in place and,
thus, mutes the Redux state and (2) it is not necessarily stable and,
thus, unnecessarily shuffles the thumbnails.
2016-11-04 13:13:26 -05:00
paweldomas
d256bc317a fix(log): log the page reload from one place 2016-11-03 16:18:05 -05:00
yanas
101c413a3c Merge pull request #1110 from jitsi/filmstrip-button-editions
Filmstrip button editions
2016-11-03 15:46:00 -05:00
yanas
c3e0d7ff56 Fix conflicts. 2016-11-03 14:42:23 -05:00
Дамян Минков
826a7fd220 Merge pull request #1109 from jitsi/fix_toolbar_popups2
fix(toolbar): popups
2016-11-03 14:36:33 -05:00
Дамян Минков
e5607d0371 Merge pull request #1096 from kkrisstoff/task/video-thumbnail-menu-should-appear-on-hover
show/hide video thumbnail menu on hover
2016-11-03 13:52:08 -05:00
hristoterezov
b3b50fe346 fix(toolbar): popups 2016-11-03 13:47:15 -05:00
Boris Grozev
16a2b0377a chore: Only uses jslint 3+
because older versions don't work with our .jslintrc file
2016-11-03 13:18:56 -05:00
Ilya Daynatovich
8ba7a354e5 Remove duplicate event handler 2016-11-03 20:02:44 +02:00
Ilya Daynatovich
bbbd01b26c Adjustments in filmstrip section 2016-11-03 17:54:23 +02:00
Konstantyn Pahsura
e7d089c815 Merge branch 'jit/master' into task/video-thumbnail-menu-should-appear-on-hover 2016-11-03 17:30:19 +02:00
Ilya Daynatovich
24169743e7 Clean up filmstrip styles 2016-11-03 17:07:48 +02:00
Ilya Daynatovich
02ae3b3053 Add wrapper 2016-11-03 16:26:56 +02:00
Ilya Daynatovich
69e4f49e74 Add bunch of JSDocs 2016-11-03 16:21:14 +02:00
Ilya Daynatovich
1328870a2b fix bug with F shortcut 2016-11-03 16:21:14 +02:00
Ilya Daynatovich
51d48e18c6 Refactor filmstrip module 2016-11-03 16:21:14 +02:00
hristoterezov
4b1dfb9a33 Merge pull request #1095 from BeatC/shortcuts-reversed
Shortcuts reversed
2016-11-03 09:14:05 -05:00
Konstantyn Pahsura
9633919e32 css class for remote video specified 2016-11-03 15:40:43 +02:00
Konstantyn Pahsura
76e55f1132 show/hide menu if elem hovered 2016-11-03 15:40:43 +02:00
Ilya Daynatovich
30e717bd20 Rename classname; Refactor click on video method 2016-11-03 12:13:03 +02:00
Ilya Daynatovich
d703271c96 Fix bug with resizing when using shortcut for switching btw videos 2016-11-03 11:48:48 +02:00
Ilya Daynatovich
c6c701330a Change order of remote videos when clicking on shortcut 2016-11-03 11:48:48 +02:00
yanas
f02f050e56 Merge pull request #1106 from jitsi/disabled-sidepanels-load
Disables loading side panels when they are disabled.
2016-11-02 18:16:13 -05:00
damencho
f6609524ea Disables loading side panels when they are disabled.
Adds some safety checks for disabled contactlist.
2016-11-02 16:14:36 -05:00
Lyubomir Marinov
6eb767ba11 [React Native] Disable audio levels
The audio levels are gathered by lib-jitsi-meet via polling of
RTCPeerConnection.getStats() which is very slow on Android. Since the
mobile app makes no use of audio levels, it is easiest to disable them
for now in order to not penalize the app.
2016-11-02 14:44:42 -05:00
yanas
c4d0340956 Merge pull request #1034 from m-voloshin/FEATURE-hide-filmstrip
Filmstrip is extended with "Hide" button
2016-11-02 14:24:45 -05:00
hristoterezov
10f04575ed Merge pull request #1060 from kkrisstoff/task/toolbar-side-panel
make side panels init from js
2016-11-02 13:22:55 -05:00
Дамян Минков
a9c984e7db Merge pull request #1091 from BeatC/customer-agreement
Customer agreement
2016-11-02 13:18:33 -05:00
yanas
03fd87476a Merge pull request #1104 from BeatC/adjust-notification-width
Adjusted notification width
2016-11-02 12:40:05 -05:00
Дамян Минков
317f0e736c Merge pull request #1105 from jitsi/fix_frozen_msg
fix(LargeVideoManager): frozen displayname in a msg
2016-11-02 11:58:58 -05:00
Konstantyn Pahsura
9f280e320d _.template removed 2016-11-02 18:42:39 +02:00
Konstantyn Pahsura
a1e098680d make side panels init from js 2016-11-02 18:42:39 +02:00
paweldomas
ede4808ec4 fix(LargeVideoManager): frozen displayname in a msg
The "data-i18n-options" attribute value is stored in jQuery cache and
at the time when i18-next tries to access it to do the translation
it gets the old value from the cache and the message is not updated
correctly. Passing the "msgOptions" explicitly to "translateElement"
fixes the problem by avoiding jQuery cache.
2016-11-02 11:32:40 -05:00
yanas
e86294191a Merge pull request #1098 from BeatC/toolbar-splitter-restyle
Restyled toolbar splitter
2016-11-02 09:27:08 -05:00
yanas
0bf372b8ab Merge pull request #1103 from jitsi/esc-shortcuts-dialog
Esc closes shortcuts dialog
2016-11-02 09:22:34 -05:00
Ilya Daynatovich
ae7ad8b456 Adjusted notification width 2016-11-02 13:09:18 +02:00
Ilya Daynatovich
16c70fddba Restyled toolbar splitter 2016-11-02 12:13:30 +02:00
Дамян Минков
e679509c56 Merge pull request #1094 from bgrozev/conn-quality
Conn quality
2016-11-01 17:46:13 -05:00
hristoterezov
f08e9afc19 Merge pull request #1069 from jitsi/update-i18next
Updates i18next and bundles default translations.
2016-11-01 17:02:17 -05:00
damencho
215d8b1355 Updates show/hide of shortcuts dialog.
Fixes not able to close it with esc button.
2016-11-01 16:48:29 -05:00
hristoterezov
b1f129a53a fix(Chat): Display long nicknames with ... 2016-11-01 16:41:58 -05:00
hristoterezov
a6a7e81a0f feat(DisplayName): Limit local and remote display name to 50 chars 2016-11-01 16:40:52 -05:00
damencho
aaca510f8a Updates jsdoc. 2016-11-01 15:34:21 -05:00
yanas
3ad1573130 Merge pull request #1100 from jitsi/close-page-update
Close page update
2016-11-01 15:31:43 -05:00
paweldomas
d60146c6a8 fix(conference): leave the room when XMPP connection is dropped
It looks weird when the page reload overlay appears and the conference
continues in the background (the connection to the JVB remains active).
The library will not recover and the conference can not continue without
the signalling, so the room should be left and media stopped.
2016-11-01 15:08:59 -05:00
Дамян Минков
31d6a41759 Merge pull request #1099 from jitsi/fix_toolbar_popups
fix(toolbar): popups
2016-11-01 15:07:15 -05:00
hristoterezov
e731f6c3f3 feat(translation): ES6 support 2016-11-01 15:05:43 -05:00
damencho
1f200b63a7 Updates i18next and bundles default translations. 2016-11-01 15:05:23 -05:00
damencho
ae01275729 Renames variables. 2016-11-01 14:46:47 -05:00
Lyubomir Marinov
fab93a170e [iOS] Mark the app as VoIP 2016-11-01 13:59:53 -05:00
damencho
f28311a2ce Changes line color for static pages. 2016-11-01 13:28:04 -05:00
damencho
7da8db74b0 Adds default title to static pages. 2016-11-01 13:25:05 -05:00
damencho
5feeef0122 Handles data from feedback callback and use it for correct close page. 2016-11-01 13:14:21 -05:00
damencho
87f7be2182 Updates close page and adds a second one.
Close pages text are different depending whether feedback was provided or not.
2016-11-01 13:13:07 -05:00
damencho
e81a10de4a Reports to close callback whether feedback is submitted. 2016-11-01 13:10:58 -05:00
hristoterezov
8d9863a635 fix(toolbar): popups 2016-11-01 11:07:27 -05:00
Lyubomir Marinov
456b3030e3 [iOS] Fix the Xcode project file for CocoaPods 2016-11-01 07:58:26 -05:00
Ilya Daynatovich
d72695ae0f Added app substitution 2016-11-01 11:30:01 +02:00
yanas
e6748cf153 Merge pull request #1093 from jitsi/text-updates
Text updates.
2016-10-31 17:40:18 -05:00
yanas
a5e7c86125 Merge pull request #1092 from jitsi/update-lock-state
Updates lock state
2016-10-31 17:29:11 -05:00
hristoterezov
a7a7f269c3 Merge pull request #1054 from kkrisstoff/task/make-extended-toolbar-dynamically-created-buttons
make extended buttons dynamic
2016-10-31 16:50:14 -05:00
Boris Grozev
c815b1f25b feat: Updates the GSM bars' thresholds.
Adapts to changes in lib-jitsi-meet. Uses an Array which guarantees the
order of its elements, and avoids setting a css property multiple times.
2016-10-31 16:08:24 -05:00
Boris Grozev
c98ffdc817 refactor: Don't calculate remote connection quality. 2016-10-31 16:07:25 -05:00
Boris Grozev
09016c2182 refactor: Moves more code to lib-jitsi-meet. 2016-10-31 16:07:25 -05:00
Boris Grozev
22b2f17234 refactor: Moves more code to lib-jitsi-meet. 2016-10-31 16:07:25 -05:00
Boris Grozev
0c1bef927b Don't use no double non-positives. 2016-10-31 16:07:25 -05:00
Boris Grozev
4aa47a7901 feat: moves isConnectionInterrupted to lib-jitsi-meet. 2016-10-31 16:07:25 -05:00
Boris Grozev
051db50b3f feat: Moves connectionquality to lib-jitsi-meet. 2016-10-31 16:07:25 -05:00
yanas
c726a1a879 Text updates. 2016-10-31 16:00:11 -05:00
damencho
2edb279d22 Fixes password set remotely text. 2016-10-31 14:40:46 -05:00
Lyubomir Marinov
20e7c6d873 [iOS] Crashlytics 2016-10-31 14:08:25 -05:00
damencho
96479e0474 Fixes password and isModerator check in invite dialog. 2016-10-31 14:01:22 -05:00
Дамян Минков
1036768b2a Merge pull request #1080 from jitsi/dont_show_again
Implement dont show again util
2016-10-31 13:36:50 -05:00
Konstantyn Pahsura
77e28a6a45 toolbar buttons fixes 2016-10-31 20:25:27 +02:00
hristoterezov
a8b69d5cd8 feat(MessageHandler): Implement dont show again utility 2016-10-31 13:02:41 -05:00
Дамян Минков
9054e72b7f Merge pull request #1090 from jitsi/file_loading_err
Prevent from displaying broken page
2016-10-31 13:00:06 -05:00
Maxim Voloshin
dc93940bbd Filmstrip is extended with "Hide" button 2016-10-31 19:59:45 +02:00
Lyubomir Marinov
b6a6c99c9d [React Native] Enable scrolling of the thumbnails 2016-10-31 12:33:53 -05:00
Ilya Daynatovich
544792b9cc Editions in colors 2016-10-31 19:21:15 +02:00
hristoterezov
7e2fe30472 feat(JitsiLocalStorage): Implement localStorage wrapper 2016-10-31 12:11:03 -05:00
Ilya Daynatovich
5e7e5b317b Fix texts 2016-10-31 19:02:32 +02:00
Ilya Daynatovich
a63bb5d906 Add policy section 2016-10-31 18:23:28 +02:00
paweldomas
0354dd2c24 feat(index.html): prevent from displaying broken page
The commit adds an error listener which will replace the document body
with an error message if any of the files required for the app to
be displayed correctly fails to load.
2016-10-31 10:50:01 -05:00
Ilya Daynatovich
647f577332 Rearrange overlay layout 2016-10-31 17:35:22 +02:00
Kostiantyn Pashura
be1ba21166 make extended buttons dynamic 2016-10-31 13:30:16 +02:00
Lyubomir Marinov
8b2491c7a2 [tvOS] Automatic Xcode project file fixes
Xcode insists on automatically fixing the project file with tvOS
support. In order to not have to constantly ignore these automatic
changes when committing, commit them.
2016-10-30 20:43:29 -05:00
Lyubomir Marinov
f987a53313 [iOS] Clean up the Xcode project file 2016-10-30 20:26:39 -05:00
Lyubomir Marinov
d875b35b32 [Android] Crashlytics 2016-10-30 18:12:33 -05:00
yanas
df76d6990e Merge pull request #1062 from m-voloshin/FEATURE-tooltip-for-contact-list
New tooltip for contact list
2016-10-28 16:11:01 -05:00
yanas
86ffccb95a Merge pull request #1076 from kkrisstoff/UI/bugs-and-adjustments
audio_level oppacity and addParticipant button name
2016-10-28 16:10:47 -05:00
yanas
50494eb745 Updates to master 2016-10-28 13:20:38 -05:00
Konstantyn Pahsura
28f719b58a dropdown styles fixes 2016-10-28 13:09:47 -05:00
yanas
d384cd77c6 Merge pull request #1085 from jitsi/video-thumbnail-hover
Update _variables.scss
2016-10-28 12:54:25 -05:00
yanas
bb3384dc7c Update _variables.scss 2016-10-28 12:53:50 -05:00
yanas
ae9819a45c Merge pull request #1075 from BeatC/menu-restyling-editions
Adjust alignment of remote video menu
2016-10-28 12:43:12 -05:00
yanas
40473a16c7 Merge pull request #1084 from jitsi/toolbar_animation
fix(Toolbar): Both toolbars are displayed in the same time
2016-10-28 12:40:37 -05:00
hristoterezov
baad364b04 fix(Toolbar): Both toolbars are displayed in the same time 2016-10-28 12:39:25 -05:00
Дамян Минков
d2f52b534a Merge pull request #1083 from jitsi/fix_hover_thumbnail
fix(Thubmnail_PopupMenu): the thumbnail should be considered hovered when the popup menu is hovered
2016-10-28 11:59:36 -05:00
Lyubomir Marinov
532010c916 Update project files as recommended by Xcode 2016-10-28 11:30:04 -05:00
paweldomas
e349cc59ad style(translation): adds comment about lang auto detection 2016-10-28 11:17:09 -05:00
hristoterezov
634a18e847 fix(Thubmnail_PopupMenu): the thumbnail should be considered hovered when the popup menu is hovered 2016-10-28 11:16:40 -05:00
paweldomas
01581196f0 Merge pull request #1082 from 'BeatC/config-option-to-freeze-translation'
Add detect translation freeze in interface config
2016-10-28 11:14:22 -05:00
Konstantyn Pahsura
d7ed0bac69 audio_level oppacity and addParticipant button name 2016-10-28 18:39:40 +03:00
Ilya Daynatovich
209272f940 Add detect translation freeze in interface config 2016-10-28 16:18:08 +03:00
Ilya Daynatovich
138ed6a487 Fixed interface 2016-10-28 13:52:08 +03:00
Ilya Daynatovich
d84d0b65ca Adjust alignment of remote video menu 2016-10-28 13:52:08 +03:00
Paweł Domas
2fe69d409b Merge pull request #1071 from jitsi/ongoing-work-video-thumbnails
Ongoing work video thumbnails
2016-10-27 17:13:27 -05:00
damencho
9764fe52de Removed not needed setting of the quality to 0.
We now just hide the icon with values and show the interrupted one. Calling this one was causing troubles like flickering and stats popover not able to hide, once shown. On hover we are calling updateView which ends to this call which destroy and create the popover, which maybe is leading to this problems.
2016-10-27 16:56:32 -05:00
damencho
131d5cc256 Change the colour of the connection indicator badge. 2016-10-27 15:27:28 -05:00
Дамян Минков
7fead897ed Merge pull request #1079 from jitsi/fix_avatar_z_index
Do not display avatar on top of the connection problem messages
2016-10-27 15:26:22 -05:00
paweldomas
e3d5bd3dfb fix(css): do not display avatar on top of the messages
Previously the z-index was introduced in order to have the avatar
visible on top of the black video element, but now we're always hiding
the video element when the avatar is displayed, so it's no longer
required.
2016-10-27 14:52:32 -05:00
damencho
e3edef2999 Renames videocontainer overlay to hoverOverlay. 2016-10-27 14:32:22 -05:00
damencho
328ff54423 Fixes undefined error and shared video. 2016-10-27 14:08:06 -05:00
damencho
2807346bdf Makes decision what to show in avatar consistent (in updateView). 2016-10-27 13:17:17 -05:00
damencho
fec8f4e005 Fixes an issue with mixing visibility functions for elements.
In small video we use UIUtil.setVisibility, so we should not use jquery show/hide for the same element.
2016-10-26 17:36:07 -05:00
damencho
3ae299cf2b Fixes comments. 2016-10-26 17:18:36 -05:00
Дамян Минков
bbf68a97bb Merge pull request #1072 from jitsi/fix_stop_rec_dialog
Make the stop recording dialog work again
2016-10-26 16:14:28 -05:00
paweldomas
739e2bd35a fix(Recording): broken stop recording dialog 2016-10-26 16:10:45 -05:00
damencho
7acda03024 Adds an overlay to dim videos when showing displayname. 2016-10-26 15:51:09 -05:00
damencho
5cead57723 Reverts hover over small video to show display name. 2016-10-26 15:51:09 -05:00
Ilya Daynatovich
1e24be6dd4 Fix editing the name 2016-10-26 15:51:09 -05:00
Ilya Daynatovich
8d80e13e31 Fix connection indicator bars 2016-10-26 15:51:09 -05:00
Ilya Daynatovich
69b79b7687 Fix icon styles 2016-10-26 15:51:09 -05:00
Ilya Daynatovich
698b3caeb8 fix styles in connection indicators 2016-10-26 15:51:09 -05:00
Ilya Daynatovich
323684c5fe fix conflicts after rebase 2016-10-26 15:51:09 -05:00
Ilya Daynatovich
09e3fb9917 Fixed hack with displayname margin 2016-10-26 15:51:09 -05:00
yanas
a17a98991c Ongoing work on video thumbnail layout 2016-10-26 15:51:09 -05:00
yanas
3fe43abdea Move the display name to the center 2016-10-26 15:51:09 -05:00
Lyubomir Marinov
64112e00e6 react-native-webrtc 0.53.1 2016-10-26 15:20:06 -05:00
Дамян Минков
61651f7060 Merge pull request #1070 from jitsi/mute_participant_dialog
feat(Mute_Participant): Implement warning dialog for muting remote participant
2016-10-26 15:05:29 -05:00
hristoterezov
09c8e14465 feat(Mute_Participant): Implement warning dialog for muting remote participant 2016-10-26 14:57:09 -05:00
hristoterezov
0bb772d242 Merge pull request #1059 from BeatC/toolbar-animation
Change main toolbar animation; optimize mousemove handler
2016-10-26 11:52:01 -05:00
George Politis
68b587b110 Merge pull request #1064 from jitsi/5xx_reloads
Page reloads on BOSH HTTP errors
2016-10-26 11:39:44 -05:00
Дамян Минков
dd4a5f2705 Adds 404 error page in default configs. 2016-10-26 09:21:15 -05:00
yanas
79c52e1a77 Merge pull request #1061 from BeatC/button-shifted
Button shifted
2016-10-25 22:29:52 -05:00
hristoterezov
221f6d1d68 Merge pull request #1056 from jitsi/translations-update
Translations update
2016-10-25 18:11:15 -05:00
hristoterezov
ea0f0da8a4 feat(JitsiPopover): Add onBeforePosition option 2016-10-25 17:57:29 -05:00
hristoterezov
d2ccd20c78 Merge branch 'm-voloshin-FIX-frozen-tooltips' 2016-10-25 16:52:29 -05:00
hristoterezov
8762aae111 fix(SmallVideo): Add translateElement call removed by previous commit 2016-10-25 16:52:11 -05:00
hristoterezov
05fcaa2554 Merge branch 'FIX-frozen-tooltips' of git://github.com/m-voloshin/jitsi-meet into m-voloshin-FIX-frozen-tooltips 2016-10-25 16:51:03 -05:00
paweldomas
3c6d464b32 feat(PageReload): make the reload interval random, between 10-30 sec 2016-10-25 15:58:09 -05:00
paweldomas
c95c46edac feat(conference): reload the page when XMPP connection is dropped 2016-10-25 15:57:53 -05:00
damencho
b2a1c9881e Fixes comments from review.
Adds a safe check, i18n is expecting undefined not null. Fix a method name and translation to be at placeholder.
2016-10-25 15:18:56 -05:00
Lyubomir Marinov
9f10a059ef React Native 0.36.0, React 15.3.2 2016-10-25 14:57:18 -05:00
Maxim Voloshin
86f1d287d7 Fix comments 2016-10-25 20:40:43 +03:00
Maxim Voloshin
6820ec8d23 Show and hide indicators using pure js 2016-10-25 20:40:00 +03:00
Lyubomir Marinov
4997ae79e3 Fix toolbar's mute buttons when starting muted
The toolbar's mute buttons depict respective features/base/media states.
However, (un)muting is practically carried out by features/base/tracks.
When the mobile app enters a conference configured to invite the joining
participant to mute themselves, the tracks would be muted but the
toolbar's mute buttons would not reflect that.
2016-10-25 11:43:15 -05:00
Maxim Voloshin
c76fa50aa5 New tooltip for contact list 2016-10-25 19:27:27 +03:00
Maxim Voloshin
1c218191b0 Apply tooltip for indicator once 2016-10-25 17:50:28 +03:00
Ilya Daynatovich
84d71d558e fix invite dialog design 2016-10-25 17:33:51 +03:00
Ilya Daynatovich
659c84d696 fix margin 2016-10-25 17:24:11 +03:00
Ilya Daynatovich
99d50ade11 Change main toolbar animation; optimize mousemove handler 2016-10-25 14:55:43 +03:00
Дамян Минков
f271eb4610 Merge pull request #980 from kkrisstoff/task/add-error-page
error layout added
2016-10-24 16:31:16 -05:00
damencho
076f7a82de Updates translation readme. 2016-10-24 14:42:23 -05:00
damencho
547f96c0c1 Merge branch 'master' into translations-update 2016-10-24 14:40:50 -05:00
damencho
8a789aa608 Fixes some translations. 2016-10-24 14:17:22 -05:00
yanas
8fd23771f4 Merge pull request #1058 from kkrisstoff/select2-background-changes
dropdown color changes
2016-10-24 13:02:54 -05:00
Konstantyn Pahsura
15bc3b9ad4 dropdown color changes 2016-10-24 20:40:23 +03:00
yanas
3196ffd941 Merge pull request #1042 from m-voloshin/FEATURE-hd-label-relocation
Relocate "HD" label
2016-10-24 12:21:26 -05:00
Kostiantyn Pashura
84d2b79b4f 404 error page added 2016-10-24 19:33:08 +03:00
bgrozev
a4e1f939cd Merge pull request #1057 from jitsi/fix_connection_problem_z_idx
Reduce the z index of the connection problems message
2016-10-24 11:09:48 -05:00
damencho
563ea1244c Updates openMessageDialog to get only key and options. 2016-10-21 22:10:33 -05:00
hristoterezov
3dca6f2354 Merge pull request #1008 from jitsi/page_reload_overlay
Page reload overlay
2016-10-21 14:36:06 -05:00
paweldomas
bf5a1d1f8e fix(videolayout css): reduce conn problem msg z-index
For small window sizes and many video thumbnails the message may go on
top of the thumbnails.
2016-10-21 14:03:34 -05:00
paweldomas
a615649933 fix(PageReloadOverlay): changes text and adjusts style 2016-10-21 13:50:23 -05:00
paweldomas
3c0c823a37 ref(Overlay): introduce base class 2016-10-21 13:50:08 -05:00
damencho
efed4bf13c Merge branch 'master' into translations-update 2016-10-21 13:19:23 -05:00
damencho
5217bf0bb8 Removes translateString and use translateElement.
Removing translateString forces using data-i18n attributes, to make sure we do not forget to set them. Missing data-i18n attributes is a problem with late loading where we can end up without translation, without text. Missing data-i18n attributes is also problem that strings will not be translated when changing language.
Fixes a bug in invite dialog, where remove password button was shown for non moderators.
2016-10-21 12:11:22 -05:00
paweldomas
98de4c90b5 fix(RingOverlay): puts the "ring overlay" back below the toolbars 2016-10-21 10:47:21 -05:00
paweldomas
8c426e8bb7 fix(ToolbarToggle): restore call overlay to the timeout check 2016-10-21 10:27:10 -05:00
paweldomas
5bc727804f fix(PageReloadOverlay): do not log message every second 2016-10-21 10:18:03 -05:00
yanas
32bfebc924 Merge pull request #1033 from BeatC/add-jsdoc
Add JSDoc and rename method
2016-10-21 10:12:31 -05:00
paweldomas
8f8b1385fa ref(ConferenceUrl): converts to class and binds instance to global APP
Converts ConferenceUrl to a class and binds an instance to the global
APP variable, as requested by HTerezov.
2016-10-21 09:46:09 -05:00
paweldomas
d342f93547 fix(Invite): remove unused 'updateInviteUrl' 2016-10-21 09:25:14 -05:00
paweldomas
ecfc56461e fix(ToolbarToggler): remove Yoda condition
Is not very readable and is not used across the project
2016-10-21 09:22:17 -05:00
Maxim Voloshin
d09a8b1896 Adjusted styles for "Live Streaming" indicator. 2016-10-21 13:38:12 +03:00
Maxim Voloshin
88be44b472 Relocated "HD" label 2016-10-21 13:38:12 +03:00
Дамян Минков
4b82bc0e33 Merge pull request #1049 from jitsi/fix_thank_you_dialog
fix(feedback): Fixes the logic for the thank you dialog
2016-10-20 22:30:18 -05:00
hristoterezov
3022754f19 fix(feedback): Fixes the logic for the thank you dialog 2016-10-20 14:20:28 -05:00
paweldomas
f7bfe8d8bf feat: introduce ConferenceUrl module
We need to make sure that on the page reload all original parameters
used to load the conference are preserved. New modules helps to manage
different types of conference URLs like the one used for invites and
the one for reloading the page.
2016-10-20 13:53:24 -05:00
paweldomas
210605d8f3 fix(MessageHandler): suppress the notifications on top of the overlay 2016-10-20 13:52:35 -05:00
paweldomas
52344ff741 fix(ToolbarToggler): restore 'force' arg in timeout logic 2016-10-20 13:52:35 -05:00
paweldomas
687b0cad8e fix(ToolbarToggler): remove call overlay from the timeout check
Remove check for the call overlay being visible in postponing
the toolbar being hidden, as we don't want to have it displayed at all
when the overlay is there.
2016-10-20 13:52:35 -05:00
paweldomas
0053c4df49 feat(PageReloadOverlay): log the reload event 2016-10-20 13:52:35 -05:00
paweldomas
2a5b4dde31 feat: implement PageReloadOverlay 2016-10-20 13:52:35 -05:00
paweldomas
d2690444ac fix(overlay): bring overlay on top of the toolbars 2016-10-20 13:52:35 -05:00
paweldomas
c473178dfe fix(UserMediaPermissionsGuidanceOverlay): broken display 2016-10-20 13:50:11 -05:00
paweldomas
229a3b4418 fix(conference): disconnect on VIDEOBRIDGE_NOT_AVAILABLE error
Will disconnect on ConferenceErrors.VIDEOBRIDGE_NOT_AVAILABLE.
Show the same message when either JVB is not available or Jicofo
disconnects.
2016-10-20 13:50:11 -05:00
yanas
63dfa5247f Merge pull request #1048 from BeatC/menu-restyle
Menu restyle
2016-10-20 13:48:19 -05:00
Maxim Voloshin
469dee36ee Initialised variable for notification opacity 2016-10-20 13:03:00 -05:00
Maxim Voloshin
abb1482456 Applied updated design for notifications 2016-10-20 13:03:00 -05:00
Lyubomir Marinov
e1c5ea11bc Merge branch 'kkrisstoff-task/dropdown-aui-changes'
the commit.
2016-10-20 12:39:23 -05:00
Lyubomir Marinov
55b741d11b Merge branch 'master' into kkrisstoff-task/dropdown-aui-changes 2016-10-20 12:10:50 -05:00
Ilya Daynatovich
8f57179aa4 return default value 2016-10-20 19:41:04 +03:00
yanas
0fa5aa48af Merge pull request #992 from kkrisstoff/task/make-extended-toolbar-dynamically-created
toolbar: authentication button changed
2016-10-20 11:40:35 -05:00
hristoterezov
a65fca851c refactor(FilmStrip): calculateThumbnailSizeFromAvailable 2016-10-20 11:34:14 -05:00
Ilya Daynatovich
62af73ea09 Add new option to jitsi-popover 2016-10-20 19:28:19 +03:00
Ilya Daynatovich
0e8297ea8d restyle of menu 2016-10-20 19:28:19 +03:00
Ilya Daynatovich
70861465e1 Editions in jitsi popover styles 2016-10-20 19:28:19 +03:00
yanas
3bf8b7fbe2 Merge pull request #1007 from BeatC/connection-indicator-restyle
Connection indicator restyle
2016-10-20 11:08:51 -05:00
Kostiantyn Pashura
436f3b9d9b auth btn removed. login/logout --> Profile 2016-10-20 12:28:58 +03:00
Kostiantyn Pashura
71475038ba toolbar: authentication button changed 2016-10-20 12:26:53 +03:00
Lyubomir Marinov
c9edc0ae15 Merge branch 'master' into kkrisstoff-task/dropdown-aui-changes 2016-10-19 19:06:58 -05:00
Lyubomir Marinov
242c1419fd Format source code for (some) consistency 2016-10-19 18:54:21 -05:00
yanas
8ca0943881 Merge pull request #880 from jitsi/ring-overlay-style
style(LargeVideo): Rename LARGE_VIDEO_AVATAR_DISPLAYED event
2016-10-19 16:24:34 -05:00
hristoterezov
58a07355fb style(RingOverlay): Rename onAvatarDisplayed to onAvatarVisible 2016-10-19 15:58:36 -05:00
hristoterezov
4acfb033c8 style(LargeVideo): Rename LARGE_VIDEO_AVATAR_DISPLAYED event 2016-10-19 15:57:02 -05:00
Lyubomir Marinov
572fb20dd4 Merge branch 'task/dropdown-aui-changes' of https://github.com/kkrisstoff/jitsi-meet into kkrisstoff-task/dropdown-aui-changes 2016-10-19 13:38:38 -05:00
Lyubomir Marinov
d15413cd18 Merge branch 'mlaux-bugfix/android-launcher-intent' 2016-10-19 12:24:37 -05:00
Matt Laux
c18caf52d0 Fix Android launcher intent so that app appears in drawer. 2016-10-19 10:59:09 -05:00
Ilya Daynatovich
c09e10a584 updates in connection indicator styles 2016-10-19 17:57:16 +03:00
Lyubomir Marinov
1ff0bdbcfd Fix the in-app icons on Android
Bundle our custom icon font jitsi.ttf in the Android app (which we
already do for the iOS app).

Additionally, remove icon font files which are not in use.
2016-10-19 09:10:11 -05:00
Kostiantyn Pashura
736b98869f dropdown restyle 2016-10-19 12:40:03 +03:00
Kostiantyn Pashura
91fd16e9b4 aui checkbox removed 2016-10-19 12:40:03 +03:00
Kostiantyn Pashura
8118b4aea1 aui select and checkbox added 2016-10-19 12:40:03 +03:00
Дамян Минков
f62d7dbdf7 Merge pull request #1040 from jitsi/fix-feedback-color-and-size
Fix feedback button color and star size
2016-10-18 15:25:40 -05:00
yanas
1bf2920f3e Fix feedback button color and star size 2016-10-18 15:23:52 -05:00
Дамян Минков
8ecf079a3f Merge pull request #1039 from jitsi/stop-logging-servers-in-the-name
Stop logging servers in the event name
2016-10-18 15:18:44 -05:00
Emil Ivov
05ae9134a8 Update conference.js 2016-10-18 15:15:47 -05:00
damencho
040f4a6618 Adds data-i18n attribute. 2016-10-18 15:02:09 -05:00
damencho
a9aa29d0ad Adds data-i18n attribute to the feedback. 2016-10-18 15:01:58 -05:00
damencho
54cfbaaba0 Updates some translations for login dialog. 2016-10-18 15:01:50 -05:00
damencho
0455c26fb2 Uses titleKey to generate title string containing data-i18n attribute. 2016-10-18 15:00:09 -05:00
damencho
65f8c9ad97 Removes title param from openTwoButtonDialog. 2016-10-18 14:54:30 -05:00
damencho
f0ac52614b Removes title param from openTwoButtonDialog. 2016-10-18 14:54:22 -05:00
damencho
b5f0d30298 Removes not used parameter of openMessageDialog (title).
We pass key which is enough to obtain the title.
2016-10-18 14:54:14 -05:00
Дамян Минков
d97ed17052 Merge pull request #1038 from jitsi/api_commands
fix(iframe_api): toggleScreenSharing command
2016-10-18 14:52:21 -05:00
hristoterezov
dc43135980 fix(iframe_api): toggleScreenSharing command 2016-10-18 14:37:55 -05:00
Дамян Минков
27158752b0 Merge pull request #1025 from BeatC/display-name-required-dialog-fixes
fix display name required dialog
2016-10-18 14:36:03 -05:00
Дамян Минков
5c6f897ce7 Merge pull request #1030 from coresh/patch-1
Fixes issue of method 'setTooltip'
2016-10-18 14:35:53 -05:00
Дамян Минков
d415a15e93 Merge pull request #1037 from jitsi/add-specific-read-only-color
Add specific color for read-only input
2016-10-18 14:35:47 -05:00
yanas
19709cd3fc Adds comments. 2016-10-18 14:30:59 -05:00
yanas
89e15b6d3d Add specific color for read-only input 2016-10-18 14:27:16 -05:00
yanas
dcf2d64067 Merge pull request #1036 from jitsi/fix-placeholder-style
Fixes placeholder color
2016-10-18 13:00:22 -05:00
yanas
c459e3cffd Merge pull request #1031 from BeatC/invite-dialog-visual-bugs
Fix some visual bugs
2016-10-18 11:59:11 -05:00
yanas
8eb7303bd9 Fixes placeholder color 2016-10-18 11:57:38 -05:00
yanas
de67abd21d Merge pull request #1032 from kkrisstoff/Feedback-dialog-theme
feedback style variables
2016-10-18 11:20:44 -05:00
yanas
bb5495b495 Merge pull request #990 from jitsi/chatmessage_position
fix(chat): Issue with position of chat messages
2016-10-18 11:13:26 -05:00
Kostiantyn Pashura
124303b8b8 feedback style variables 2016-10-18 18:37:32 +03:00
Ilya Daynatovich
9078596f3a fix after rebase 2016-10-18 18:23:08 +03:00
Ilya Daynatovich
3254bbaabb Change styles in jitsi poppover 2016-10-18 17:57:19 +03:00
Ilya Daynatovich
26792625f2 BEMificated classes and add title 2016-10-18 17:57:19 +03:00
Ilya Daynatovich
c54938374d Editions in jitsi popover styles 2016-10-18 17:57:19 +03:00
Ilya Daynatovich
83e7f23d0f Update Connection indicator and popover js 2016-10-18 17:57:19 +03:00
Ilya Daynatovich
b7fccf5040 Update styles for popover 2016-10-18 17:57:19 +03:00
Lyubomir Marinov
a91deca6cd Remove source code duplication
An error was discovered and fixed by GitHub user blackneck in
jitsi/jitsi-meet PR #1017. The faulty source code was a piece of
duplication though. Remove the source code duplication there to reduce
the risks of bugs.
2016-10-18 09:39:17 -05:00
Ilya Daynatovich
cbc7fe5d98 Add JSDoc and rename method 2016-10-18 17:20:48 +03:00
Lyubomir Marinov
cf3ea2b8af Merge branch 'blackneck-master' 2016-10-18 09:05:46 -05:00
Ilya Daynatovich
a4c3348630 Fix some visual bugs 2016-10-18 16:53:28 +03:00
coresh
6bd5d6e4d5 Fixes issue of method 'setTooltip'
Fixes issue of method 'setTooltip' in modules/UI/util/UIUtil.js: Excluded 'Uncaught TypeError':
```
UIUtil.js:134 Uncaught TypeError: Cannot read property 'setAttribute' of null
```
2016-10-18 09:34:09 +00:00
yanas
442d2fa316 Merge pull request #1024 from BeatC/shortcut-dialog-fixes
Fix shortcut dialog toggling
2016-10-17 23:40:22 -05:00
Lyubomir Marinov
3ecc24d85e Remove obsolete Temasys workaround on React Native
jitsi/lib-jitsi-meet#66b601e disabled the execution of Temasys'
adapter.screenshare.js on browsers on which we don't use Temasys such as
React Native. Henceforth, no Temasys workarounds are necessary on React
Native.
2016-10-17 19:51:58 -05:00
Lyubomir Marinov
5e3193e087 Fix the iOS enterprise deployment build 2016-10-17 18:57:15 -05:00
yanas
b96743f4de Merge pull request #1028 from jitsi/fix-profile-title
Trivial fix of capital letters.
2016-10-17 17:20:00 -05:00
yanas
2eec52485d Fixes Profile panel title 2016-10-17 17:18:06 -05:00
Дамян Минков
c2085a5a9d Merge pull request #1027 from jitsi/fix-contact-list-resizing
Some contact list styling adjustments
2016-10-17 17:17:22 -05:00
yanas
f8733b2501 Remove semicolon 2016-10-17 16:53:16 -05:00
yanas
5597847190 Some contact list styling adjustments 2016-10-17 16:49:31 -05:00
Дамян Минков
13d187b878 Merge pull request #1019 from jitsi/add-toolbar-splitter-button
Adds toolbar splitter button
2016-10-17 16:35:15 -05:00
yanas
43906a4e30 Fix undefined check. 2016-10-17 16:05:46 -05:00
yanas
9641dbf373 Adds toolbar splitter button 2016-10-17 16:05:46 -05:00
yanas
ad2fb28f97 Merge pull request #1023 from BeatC/invite-dialog-enter-for-password
Add possibilty to set password via return key
2016-10-17 14:42:44 -05:00
Дамян Минков
2f11e85304 Updates ios project file, disables LLVM Bitcode. 2016-10-17 10:58:58 -05:00
Ilya Daynatovich
25aeb184af fix display name required dialog 2016-10-17 17:29:41 +03:00
Lyubomir Marinov
ba778c50ac Merge branch 'master' of https://github.com/blackneck/jitsi-meet into blackneck-master 2016-10-17 08:56:19 -05:00
Ilya Daynatovich
d06aef511f Fix shortcut dialog toggling 2016-10-17 16:35:47 +03:00
Ilya Daynatovich
d94b50f1e4 Add possibilty to set password via return key 2016-10-17 15:51:55 +03:00
Дамян Минков
367c9401eb Merge pull request #1020 from jitsi/invite-dialog-fix
Initialise the invite dialog on user action
2016-10-14 16:08:05 -05:00
yanas
338e1bac00 Initialise the invite dialog on user action 2016-10-14 15:38:19 -05:00
Paweł Domas
6148b4b229 Merge pull request #1018 from jitsi/fix-gms-bars-2
Fixes cannot read property of undefined if there is no local video.
2016-10-14 15:18:43 -05:00
damencho
e5f38e34e9 Fixes cannot read property of undefined if there is no local video. 2016-10-14 15:14:56 -05:00
Alexander Chernoshej
60eb76355b fix tiny mistake on removing local tracks 2016-10-14 17:26:55 +03:00
Дамян Минков
da86cba7ea Merge pull request #1014 from jitsi/fix-cdn-issue-with-remove-pass
Fixes cdn issue with remove password link.
2016-10-13 20:06:40 -05:00
Paweł Domas
33c026cc06 Merge pull request #1010 from jitsi/fullscreen-feature-fixes
Fullscreen feature fixes
2016-10-13 18:39:47 -05:00
yanas
22a2d85ee2 Fixes cdn issue with remove password link. 2016-10-13 17:57:45 -05:00
yanas
26ff54366b Moves full screen functions in UIUtil 2016-10-13 17:28:24 -05:00
hristoterezov
762420fcc8 Merge pull request #997 from jitsi/gsm-bars-2
Calculates quality based on the resolution and upload.
2016-10-13 16:26:42 -05:00
Paweł Domas
856a18fc2a Merge pull request #1011 from jitsi/adds-id-to-etherpad-iframe
Adds an id to etherpad iframe.
2016-10-13 15:49:00 -05:00
damencho
9ed6e0e2f9 Adds an id to etherpad iframe. 2016-10-13 15:46:44 -05:00
damencho
bbe475cb4e Fixes review comments.
Uses some ES6 syntax. Also removes inputHeight key for resolution as it makes no sence to have dictionary with one key. Removes some code duplication. Makes code consistent: method params for updateLocalStats and updateRemoteStats.
2016-10-13 15:31:16 -05:00
yanas
36fdb3127f Removes unrelated comment. 2016-10-13 15:17:15 -05:00
yanas
ee31d24f7c Puts fullscreen button in the top toolbar 2016-10-13 15:10:10 -05:00
yanas
7baa473e55 Fixes full screen event handling 2016-10-13 15:10:10 -05:00
yanas
688e71cd1b Merge pull request #995 from jitsi/ring_overlay_disable_ringing
Add interfaceConfig option for disabling ringing
2016-10-13 14:28:21 -05:00
Lyubomir Marinov
ce9fff2a8d Merge remote-tracking branch 'origin/master' 2016-10-13 13:33:37 -05:00
Lyubomir Marinov
6202935a27 Merge branch 'm-voloshin-FIX-audio-level' 2016-10-13 13:29:54 -05:00
Дамян Минков
df7a6f0df6 Merge pull request #1004 from jitsi/hangup_fixes
Refactor hangup.

Refactor hangup after room.leave is made to return Promise that waits for actual leave.
2016-10-13 11:36:54 -05:00
Maxim Voloshin
4ae0d1b882 Clean up audio level after previous speaker 2016-10-13 16:43:21 +03:00
hristoterezov
84fd0531f6 fix(Avatar): Avatar to return the local avatar when jid is null 2016-10-12 17:02:50 -05:00
hristoterezov
71d767f0b4 fix(hangup): Show Feedback independently from room.leave 2016-10-12 16:30:44 -05:00
hristoterezov
5fe0c62842 style(RingOverlay): Fix naming and aligning after review 2016-10-12 13:10:58 -05:00
Paweł Domas
58b4e0d59a Merge pull request #1002 from jitsi/react-native
Merge jitsi-meet-react's mobile support
2016-10-12 12:38:06 -05:00
hristoterezov
94366190a0 Merge pull request #928 from maximax123/fix-command
hot fix api.executeCommand
2016-10-12 11:38:31 -05:00
yanas
491ce70e1a Merge pull request #999 from BeatC/theming
Add main file for switch theming
2016-10-12 11:34:01 -05:00
Lyubomir Marinov
7f3ff13c18 Merge jitsi-meet-react's mobile support
As a step toward merging jitsi-meet-react with jitsi-meet to share as
much source code as possible between mobile and Web, merge the part of
jitsi-meet-react's source tree which supports mobile inside the
jitsi-meet source tree and leave jitsi-meet-react's Web support in the
source code revision history but don't have it in master anymore because
it's different from jitsi-meet's Web support. In other words, the two
projects are mechanically merged at the file level and don't really
share source code between mobile and Web.
2016-10-12 10:31:52 -05:00
Lyubomir Marinov
1edebf83ae Remove .babelrc to simplify React Native support
React Native's module bundler (aka packager) has its default Babel
preset - react-native/babel-preset - which it uses in the absence of a
custom .babelrc. Unfortunately, the default may be tripped by the
presence of a .babelrc in dependencies. Additionally, if the default
does not get tripped, the npm install of lib-jitsi-meet as a dependency
may fall into a recursion in which Babel attempts to transpile
react-native/babel-preset. To reduce the risks of stumbling upon such
problems, move Babel's configuration inside the Webpack configuration
file.
2016-10-12 10:31:52 -05:00
Lyubomir Marinov
d55e0f70d9 Import jitsi/jitsi-meet-react#2f23d98
As an intermediate step on the path to merging jitsi-meet and
jitsi-meet-react, import the whole source code of jitsi-meet-react as it
stands at
2f23d98424
i.e. the lastest master at the time of this import. No modifications are
applied to the imported source code in order to preserve a complete
snapshot of it in the repository of jitsi-meet and, thus, facilitate
comparison later on. Consequently, the source code of jitsi-meet and/or
jitsi-meet-react may not work. For example, jitsi-meet's jshint may be
unable to parse jitsi-meet-react's source code.
2016-10-12 10:31:52 -05:00
Ilya Daynatovich
429325ca6d Add main file for switch theming 2016-10-12 12:08:45 +03:00
yanas
1238ffbc40 Merge branch 'BeatC-jit/dialogs-redesign' 2016-10-11 19:10:43 -05:00
yanas
e24d5da0ef Fix eslint errors 2016-10-11 19:09:16 -05:00
yanas
74f31db434 Dialogs re-design, invite and password modifications 2016-10-11 19:08:24 -05:00
damencho
a2c71d05e6 Calculates quality based on the resolution and upload. 2016-10-11 14:54:22 -05:00
hristoterezov
e5503deadd feat(RingOverlay): Add interfaceConfig option for disabling ringing 2016-10-11 10:17:41 -05:00
Дамян Минков
d5541f612f Merge pull request #994 from jitsi/disable_dominant_speaker_indicator
feat(SmallVideo.js): New interface.config property for dominant speaker icon disable
2016-10-10 22:23:21 -05:00
hristoterezov
8fafd2b4ea feat(SmallVideo.js): New interface.config property for dominant speaker icon disable 2016-10-10 17:37:21 -05:00
ibauersachs
f66555a88f Commit from translate.jitsi.org by user ibauersachs.: 265 of 265 strings translated (0 fuzzy). 2016-10-09 08:36:48 +00:00
ibauersachs
ab895280f4 Commit from translate.jitsi.org by user ibauersachs.: 265 of 265 strings translated (0 fuzzy). 2016-10-09 08:36:39 +00:00
hristoterezov
b9705b5eed Merge pull request #991 from jitsi/filmstripfix
Fixes desktop expansion on filmstirp shortcut hide.
2016-10-07 18:05:18 -05:00
Emil Ivov
224bbdf8a9 Fixes desktop expansion on filmstirp shortcut hide. 2016-10-07 17:27:32 -05:00
Lyubomir Marinov
b8af817ea3 Merge branch 'restyle-toggle-state' 2016-10-07 15:59:16 -05:00
Lyubomir Marinov
231cd49916 Remove duplication 2016-10-07 15:31:00 -05:00
Lyubomir Marinov
35c1a77845 Merge branch 'master' into restyle-toggle-state 2016-10-07 14:09:12 -05:00
yanas
125e894624 Rename functions, fix jquery element ref and indentetation 2016-10-07 13:55:27 -05:00
hristoterezov
53cb40be4c fix(chat): Issue with position of chat messages 2016-10-07 11:23:33 -05:00
yanas
7e26625324 Merge pull request #983 from kkrisstoff/bug/make-HD-label-a-circle
border-radius for HD
2016-10-06 16:52:51 -05:00
yanas
0e9835dde2 Restyles the toolbar button toggle state 2016-10-06 16:25:15 -05:00
Lyubomir Marinov
1f66abac4d Merge branch 'analytics' 2016-10-06 15:46:55 -05:00
hristoterezov
6e4a710df6 feat(analytics): Add analytics permanent properties and use new paramenters format 2016-10-06 15:28:16 -05:00
Lyubomir Marinov
3f0aa500f7 Merge branch 'external_api' 2016-10-06 12:57:30 -05:00
Kostiantyn Pashura
e868984116 border-radius for HD 2016-10-06 15:25:58 +03:00
hristoterezov
7f24d14832 refactor(conference.js) hangup functionality 2016-10-05 20:23:43 -05:00
hristoterezov
47d39ed5ca feat(iframe_api): Implement readyToClose event and hangup command 2016-10-05 16:33:09 -05:00
yanas
924bb3c7f7 Merge pull request #948 from m-voloshin/space-for-ptt
Spacebar is used to activate Push-To-Talk
2016-10-05 12:03:54 -05:00
yanas
3c8e704ace Merge pull request #973 from m-voloshin/remove-black-line
Removed black line from contact list and message list
2016-10-03 16:35:34 -05:00
yanas
f2d6ff3426 Merge pull request #974 from m-voloshin/feedback-icon-padding
Fix padding for feedback button
2016-10-03 15:15:11 -05:00
hristoterezov
480f0c703a Merge pull request #976 from jitsi/eslint
ESLint
2016-10-03 12:53:57 -05:00
Lyubomir Marinov
a2b076985a ESLint
Enable ESLint on jitsi-meet with the same configuration and the same
goals as in lib-jitsi-meet.
2016-10-03 11:12:27 -05:00
Maxim Voloshin
9babe4a44d Fix padding for feedback button 2016-10-03 15:47:45 +03:00
Maxim Voloshin
d2c2936efa Removed black line from contact list and message list 2016-10-03 15:24:55 +03:00
yanas
98bc16801c Merge pull request #967 from jitsi/analytics_feedback
feat(analytics): Implement sendFeedback method
2016-10-01 12:25:19 -05:00
hristoterezov
71790b07b7 feat(analytics): Implement sendFeedback method 2016-09-30 17:28:32 -05:00
yanas
4ffe013165 Merge pull request #965 from jitsi/raise-hand-update
Updates raised hand to overwrite dominant speaker.
2016-09-30 12:14:58 -05:00
damencho
6320ef1caa Updates raised hand to overwrite dominant speaker. 2016-09-30 11:47:43 -05:00
hristoterezov
d10158c9fb Merge pull request #964 from jitsi/webpack
Fix babel-preset-es2015's version
2016-09-30 11:20:26 -05:00
Lyubomir Marinov
92f1061db8 Fix babel-preset-es2015's version
The latest version of babel-preset-es2015 6.16.0 fails with 'Unsupported
preset format: undefined.' Use the previous one then.
2016-09-30 11:16:51 -05:00
Lyubomir Marinov
c8f18040f6 Merge branch 'master' into webpack 2016-09-30 11:16:22 -05:00
hristoterezov
17b57ea852 Merge pull request #957 from jitsi/webpack
Switch from Browserify to Webpack
2016-09-30 10:32:36 -05:00
Lyubomir Marinov
b2a70b263a Merge branch 'talk-muted' 2016-09-30 09:39:26 -05:00
Дамян Минков
b3f0620f5b Merge pull request #963 from m-voloshin/destroy-tooltips
Completely remove attributes to destroy tooltip properly
2016-09-30 09:28:26 -05:00
Lyubomir Marinov
c95a8e058c Merge branch 'master' into talk-muted 2016-09-30 08:57:28 -05:00
Lyubomir Marinov
ecf44498b8 Merge branch 'master' into webpack 2016-09-30 08:52:36 -05:00
Maxim Voloshin
2f92aa9645 Completely remove attributes to destroy tooltip properly 2016-09-30 14:06:57 +03:00
yanas
e894b0db43 Merge pull request #962 from jitsi/remove-tooltip
Remove tooltip update
2016-09-29 17:14:09 -05:00
damencho
da65bbaa2d Updates remove tooltip util method.
Destroy is just hiding current tooltip, we also need to remove other attributes to stop showing the tooltip.
2016-09-29 16:47:32 -05:00
ibauersachs
032509be15 Commit from translate.jitsi.org by user ibauersachs.: 265 of 265 strings translated (0 fuzzy). 2016-09-29 17:00:31 +00:00
Hristo Terezov
c6f81668de Remove an unnecessary exclude from Webpack 2016-09-29 11:31:28 -05:00
Lyubomir Marinov
43d0582b2f Don't use path.resolve 2016-09-29 11:31:28 -05:00
Lyubomir Marinov
818ddad2c3 Do not distribute unminimized artifacts
The build process is capable of bundling both minimized and unminimized
artifacts for lib-jitsi-meet, jitsi-meet and external_api. However,
there does not seem to be a good reason to (1) always wait for the
building of the two versions and (2) distributing the unminimized
artifacts.
2016-09-29 11:31:28 -05:00
Lyubomir Marinov
c8f79dbd2d Switch from Browserify to Webpack 2016-09-29 11:31:28 -05:00
Lyubomir Marinov
1ceb3f0129 Switch lib-jitsi-meet from Browserify to Webpack
Since the library lib-jitsi-meet does not publish its binaries, it is
always been necessary to produce the binaries i.e. lib-jitsi-meet.js and
lib-jitsi-meet.js as part of the npm install step. Which means that any
modifications to the devDependencies of lib-jitsi-meet's package.json
always have to be reflected in jitsi-meet's package.json. Because
Webpack replaced Browserify in lib-jitsi-meet, Webpack has to become a
devDependency of jitsi-meet.
2016-09-29 11:31:28 -05:00
yanas
fe7911b944 Merge pull request #959 from m-voloshin/keyboard-shortcuts-help
Removed duplicates from keyboard shortcuts
2016-09-29 10:42:27 -05:00
yanas
0dcf8add63 Merge pull request #961 from m-voloshin/username-editing
Allow user to edit initial username
2016-09-29 10:34:17 -05:00
Paweł Domas
ae2ea4f421 Merge pull request #954 from jitsi/handle-conference-left
Waits for conference left event before navigating away from the page.
2016-09-29 10:06:57 -05:00
Maxim Voloshin
664d7a4f67 Allow user to edit initial username 2016-09-29 17:40:26 +03:00
Maxim Voloshin
6e90b767ef Removed separate check for SPACE 2016-09-29 16:07:21 +03:00
Maxim Voloshin
268a2ea7ce Removed duplicates from keyboard shortcuts 2016-09-29 15:31:45 +03:00
yanas
854fef35cb Merge pull request #955 from jitsi/audio-levels-redesign
Audio levels redesign. PR Review done from @damencho and @emcho.
2016-09-29 00:48:29 -05:00
yanas
b58556b6c3 Fixes audio level algorithm. 2016-09-29 00:22:05 -05:00
hristoterezov
97aaa36f7d Merge pull request #942 from jitsi/enable-languages
Match enabled languages to available languages
2016-09-28 19:22:27 -05:00
damencho
07f111abbd Fixes hangup when callstats is disabled. 2016-09-28 17:27:55 -05:00
yanas
3bb877cc3a Audio levels redesign. 2016-09-28 16:41:13 -05:00
Любомир Маринов
17bcc9bfcc Merge pull request #956 from jitsi/revert-903-webpack
Revert "Switch from Browserify to Webpack"
2016-09-28 16:38:42 -05:00
hristoterezov
c7cd771de2 Revert "Switch from Browserify to Webpack" 2016-09-28 16:37:24 -05:00
hristoterezov
77e65f727f Merge pull request #903 from jitsi/webpack
Switch from Browserify to Webpack
2016-09-28 16:37:07 -05:00
damencho
d793cdc797 Waits for conference left event before navigating away from the page. 2016-09-28 16:05:51 -05:00
Дамян Минков
4ec266ef11 Merge pull request #953 from jitsi/log_server
feat(log): Logs server field from jwt token
2016-09-28 15:47:56 -05:00
hristoterezov
fcc9532bde feat(log): Logs server field from jwt token 2016-09-28 15:19:16 -05:00
Paweł Domas
b4a191e27a Merge pull request #946 from jitsi/fix-moderator-notifications
Fixes moderator notifications on moderator indicator disabled
2016-09-28 14:26:00 -05:00
Lyubomir Marinov
973d40a877 Don't use path.resolve 2016-09-28 14:15:02 -05:00
Lyubomir Marinov
ce3090b8fe Do not distribute unminimized artifacts
The build process is capable of bundling both minimized and unminimized
artifacts for lib-jitsi-meet, jitsi-meet and external_api. However,
there does not seem to be a good reason to (1) always wait for the
building of the two versions and (2) distributing the unminimized
artifacts.
2016-09-28 13:57:53 -05:00
Lyubomir Marinov
f6662745d1 Switch from Browserify to Webpack 2016-09-28 13:57:53 -05:00
Lyubomir Marinov
4289df1681 Switch lib-jitsi-meet from Browserify to Webpack
Since the library lib-jitsi-meet does not publish its binaries, it is
always been necessary to produce the binaries i.e. lib-jitsi-meet.js and
lib-jitsi-meet.js as part of the npm install step. Which means that any
modifications to the devDependencies of lib-jitsi-meet's package.json
always have to be reflected in jitsi-meet's package.json. Because
Webpack replaced Browserify in lib-jitsi-meet, Webpack has to become a
devDependency of jitsi-meet.
2016-09-28 13:57:53 -05:00
paweldomas
dad3c57fad fix(conference): react to local role change only when it changes
We initialise the UI for isModerator = false on startup, so we should
not react to the event unless it gets out of sync.
2016-09-28 13:41:02 -05:00
Lyubomir Marinov
8f4b94f732 Merge branch 'm-voloshin-tooltips-global-handler' 2016-09-28 13:10:51 -05:00
yanas
76f8ca2116 Merge pull request #947 from jitsi/not-allowed-error
Not allowed error
2016-09-28 12:40:53 -05:00
Paweł Domas
94e5cda02d Merge pull request #951 from jitsi/prosody-tokens-case-insensitive-room
Prosody tokens case insensitive room name
2016-09-28 12:36:28 -05:00
yanas
066b4f16a0 Merge pull request #949 from m-voloshin/videospace-layout-fix
Removed initial animation of the video thumbnail
2016-09-28 11:50:46 -05:00
damencho
f3381b31ed Updates tokens room name verification to be case insensitive.
Room names used inside prosody are all lower case, when verify with room name from token make sure we use the room name in lower case.
2016-09-28 11:49:50 -05:00
damencho
15f4288e4a Fixes some jshint errors. 2016-09-28 11:29:47 -05:00
Lyubomir Marinov
4569970bc4 Merge branch 'tooltips-global-handler' of https://github.com/m-voloshin/jitsi-meet into m-voloshin-tooltips-global-handler 2016-09-28 11:29:15 -05:00
Maxim Voloshin
b2e0b49556 Updated JSDocs for 'TOOLTIP_POSITIONS' constant 2016-09-28 18:09:09 +03:00
Lyubomir Marinov
03152d65ab Merge branch 'tooltips-global-handler' of https://github.com/m-voloshin/jitsi-meet into m-voloshin-tooltips-global-handler 2016-09-28 09:58:49 -05:00
Maxim Voloshin
96735d47c4 Attached JSDocs for 'TOOLTIP_POSITIONS' constant 2016-09-28 17:52:27 +03:00
Lyubomir Marinov
16266e3622 Merge branch 'tooltips-global-handler' of https://github.com/m-voloshin/jitsi-meet into m-voloshin-tooltips-global-handler 2016-09-28 09:27:58 -05:00
Maxim Voloshin
87ed7b7989 Redesigned "setTooltip" method 2016-09-28 17:22:03 +03:00
Lyubomir Marinov
fef95f7cf1 Merge branch 'tooltips-global-handler' of https://github.com/m-voloshin/jitsi-meet into m-voloshin-tooltips-global-handler 2016-09-28 07:38:32 -05:00
Maxim Voloshin
36d1f7d06f Removed initial animation of the video thumbnail 2016-09-28 15:08:15 +03:00
Maxim Voloshin
33078a868c Spacebar is used to activate Push-To-Talk 2016-09-28 13:03:47 +03:00
hristoterezov
2a8700bca3 Merge pull request #938 from jitsi/participant_conn_status
Adds participant connection status notifications
2016-09-27 17:54:22 -05:00
damencho
1e54111aad Adds authentication error page.
When we receive a conference failed event with reason not allowed we show that page.
2016-09-27 17:26:38 -05:00
damencho
57003be3a3 Renames the style from close to redirect page. 2016-09-27 16:49:23 -05:00
yanas
f10177a352 Fixes moderator notifications on moderator indicator disabled 2016-09-27 14:32:54 -05:00
Maxim Voloshin
939b87ffed Tooltiped elements are mardked with "data-tooltip" attribute 2016-09-27 19:49:49 +03:00
Emil Ivov
6ccc58a060 Merge pull request #945 from jitsi/feedback-improvements
Feedback window improvements.
2016-09-26 23:14:19 -05:00
yanas
08b2fbe30f Fixes feedback message and button active state 2016-09-26 22:43:20 -05:00
Emil Ivov
cbd15f45a4 Merge pull request #944 from jitsi/pin-hover-improvements
Pin hover improvements
2016-09-26 22:42:37 -05:00
yanas
37dcc6c994 Improves the pin and hover borders 2016-09-26 22:26:05 -05:00
yanas
6249ff89ff Feedback window improvements. 2016-09-26 21:15:24 -05:00
yanas
07441b092c Merge pull request #943 from m-voloshin/fix-cursor-for-icon
Default cursor for icons
2016-09-26 15:43:51 -05:00
yanas
1c8535a2d5 Improves the pin and hover borders 2016-09-26 15:40:56 -05:00
Maxim Voloshin
047a2369b3 Default cursor for icons 2016-09-26 22:46:39 +03:00
paweldomas
7585413e7d fix(VideoLayout): from avatar to video transition
When user reconnected and the avatar is displayed we need to perform
full large video update in order to transition correctly.
2016-09-26 14:40:00 -05:00
paweldomas
6e0ba1de33 ref(VideoLayout): rename 'videoConnectionMessage'
Renames 'videoConnectionMessage' to 'localConnectionMessage', because
it is displayed when we're having problems with our local connection
and a different one will be shown for the remote connectivity issues.
2016-09-26 14:40:00 -05:00
paweldomas
661ea2cf45 feat(VideoLayout): add remote connection problems UI
Grey filter will be applied to the remote video/avatar displayed on
"large" and a message indicating remote connectivity issues will be
shown on top of that.
2016-09-26 14:39:58 -05:00
ibauersachs
bcee2a207d Commit from translate.jitsi.org by user ibauersachs.: 265 of 265 strings translated (0 fuzzy). 2016-09-26 19:36:34 +00:00
Ingo Bauersachs
e94bf73cc3 Match enabled languages to available languages 2016-09-26 21:34:46 +02:00
Ingo Bauersachs
03e8331e4f Add polish and russian 2016-09-26 21:28:55 +02:00
ibauersachs
bbd5e55e5e Commit from translate.jitsi.org by user ibauersachs.: 263 of 263 strings translated (0 fuzzy). 2016-09-26 19:03:16 +00:00
Maxim Voloshin
212798ad19 Global handler for tooltips 2016-09-26 21:29:40 +03:00
yanas
bb0f6e0989 Remove unused variable. 2016-09-26 13:02:59 -05:00
paweldomas
42fd3097de feat(VideoContainer): add 'wasVideoRendered' flag
The 'wasVideoRendered' flag will tell whether or not we have any video
image rendered(even if stalled) on the large video element.
2016-09-26 13:01:35 -05:00
paweldomas
5952261e87 ref(LargeVideoManager): introduce 'setVideoConnectionMessage' 2016-09-26 13:01:35 -05:00
paweldomas
62d2e3e2a4 feat(conference.js): add 'getParticipantDisplayName' 2016-09-26 13:01:35 -05:00
paweldomas
5843c6c569 ref(LargeVideoManager): rename 'enableVideoProblemFilter' 2016-09-26 13:01:35 -05:00
paweldomas
352e784cad fix(VideoLayout): show video when the connection is back 2016-09-26 13:01:35 -05:00
paweldomas
b8937e0349 fix(LargeVideoManager): hide video when avatar is displayed 2016-09-26 13:01:35 -05:00
paweldomas
0aea799b50 doc(LargeVideoManager): fills missing JS doc 2016-09-26 13:01:35 -05:00
paweldomas
46766ec239 fix(RemoteVideo): avoid black thumbnail
When the user is having connectivity issues we use the image cached in
the video element to show the preview in greyscale. It looks like this
cached image gets invalided after prolonged periods of time the video
element being hidden(and it is hidden when the video is muted). So we
never show this image if the user gets muted during connectivity
disruption in order to avoid blackness.
2016-09-26 13:01:35 -05:00
paweldomas
66bbc4d9fd fix(RemoteVideo): change hasVideoStarted logic
We used to rely on 'currentTime' of the video element, but we execute
'updateView' from the 'onplay' callback and on fast machines it may
happen that the value is 0 even though the video has just started.
2016-09-26 13:01:35 -05:00
paweldomas
40f2c593a2 ref(SmallVideo): figure out what is to be displayed
At any point of time we display one of the three: video, avatar or
blackness. The purpose of this commit is to make that fact more clear
in the code.
2016-09-26 13:01:35 -05:00
paweldomas
30cb948dcf feat(SmallVideo): make thumbnail grey
The video or the avatar on a thumbnail will be displayed in greyscale
when the user is having connectivity issues.
2016-09-26 13:01:35 -05:00
paweldomas
fceb512a03 ref(SmallVideo): add 'isCurrentlyOnLargeVideo' 2016-09-26 13:01:35 -05:00
paweldomas
4722054c3e ref(SmallVideo): adds avatar selector 2016-09-26 13:01:34 -05:00
paweldomas
9d1364b6fb feat(RemoteVideo): show disconnected GSM bars for remotes 2016-09-26 13:01:34 -05:00
paweldomas
5daceaead7 feat(conference.js): add isParticipantConnectionActive 2016-09-26 13:01:34 -05:00
paweldomas
8a43699a89 feat(ConnectionIndicator): show disconnected GSM bars on local thumbnail 2016-09-26 13:01:34 -05:00
paweldomas
3ef5dd20ef ref(RemoteVideo): store JitsiParticipant instead of id 2016-09-26 13:01:34 -05:00
paweldomas
e9445866a5 ref(ConnectionIndicator.js): make CQ 'object' optional 2016-09-26 13:01:34 -05:00
paweldomas
cf931f8a9f ref(ConnectionIndicator.js) pass icon class as an argument 2016-09-26 13:01:34 -05:00
yanas
3140257b69 Remove unused function. 2016-09-26 12:55:18 -05:00
Дамян Минков
b3d6e5876e Merge pull request #922 from jitsi/fix_filter_not_applied
Fix notification about network issues not displayed when expected
2016-09-26 10:04:14 -05:00
Дамян Минков
c437f64f35 Merge pull request #933 from jitsi/fix-everyone-moderator
Fixes moderator related elements when everyone is moderator
2016-09-23 18:04:53 -05:00
yanas
af91fb50b2 Fixes moderator related elements when everyone is moderator 2016-09-23 17:42:29 -05:00
Emil Ivov
a35e194a2d Merge pull request #932 from jitsi/fix_jibri
fix(FilmStrip): Add check for thumbnails
2016-09-23 16:46:49 -05:00
hristoterezov
42d9d0393d fix(FilmStrip): Add check for thumbnails 2016-09-23 16:44:32 -05:00
jitsi-pootle
d319e837f5 New files added from translate.jitsi.org based on templates 2016-09-23 19:49:12 +00:00
yanas
a054a0d61d Merge pull request #919 from kkrisstoff/add/raise-hand-icon
rise-hand-ico: blured class added
2016-09-23 11:59:40 -05:00
yanas
8e75da8540 Merge pull request #926 from jitsi/lock-fixes
Changes the state of room locker if room was locked not by current user.
2016-09-23 11:51:42 -05:00
damencho
975b13f868 Fixes setting remote room lock state change. 2016-09-23 11:34:21 -05:00
yanas
75f80ae877 Update _close.scss 2016-09-23 11:26:48 -05:00
Kostiantyn Pashura
7c824d9da0 rise-hand-ico: blured class added 2016-09-23 15:56:16 +03:00
Gubin, Maksim
9aa7f80e82 hot fix api.executeCommand 2016-09-23 14:04:19 +03:00
hristoterezov
b772c151fc Merge pull request #925 from jitsi/invite-to-share-dialog
Invite to share dialog
2016-09-22 21:53:40 -05:00
yanas
d2e42c2a7d Update MessageHandler.js 2016-09-22 21:11:24 -05:00
yanas
b54f92b2ae Fixes the copy action. 2016-09-22 18:17:37 -05:00
yanas
5ef241ae66 Merge pull request #927 from jitsi/fix-feedback-resolve
Makes sure we always resolve(call the callback) in feedback dialog.
2016-09-22 17:47:17 -05:00
damencho
eb2e709749 Makes sure we always resolve(call the callback) in feedback dialog.
Call the callback even when clicking outside the dialog, or escaping to close it.
2016-09-22 16:55:08 -05:00
yanas
06247266ad Merge pull request #924 from jitsi/add-close-page
Adds close page
2016-09-22 16:20:14 -05:00
damencho
f9a5b62326 Changes the state of room locker if room was locked not by current user. 2016-09-22 16:10:17 -05:00
yanas
644faca306 Re-designs invite dialog as share link. 2016-09-22 15:50:09 -05:00
yanas
9cb0723f8d Remove duplicate styles. 2016-09-22 15:32:54 -05:00
yanas
48c99e796f Includes content to close html. 2016-09-22 15:32:54 -05:00
damencho
fcf7069b25 Adds close page.
When enabled after hanging up redirect to close page, if needed feedback will be displayed.
2016-09-22 15:32:54 -05:00
damencho
415619021f Moves handling of thank you dialog.
Moves handling of thank you dialog out of the Promise that handles the feedback and just before we redirect to welcome page.
2016-09-22 15:32:54 -05:00
yanas
88a45cf991 Fixes colors in dialogs. 2016-09-22 14:50:31 -05:00
yanas
7eb85fe7aa Merge pull request #923 from jitsi/fix_ringoverlay_sound
fix(ringoverlay): Path of the ogg file
2016-09-22 14:08:25 -05:00
hristoterezov
0e5fe88b5e fix(ringoverlay): Path of the ogg file 2016-09-22 13:50:10 -05:00
yanas
b754361268 Merge pull request #920 from jitsi/remove_prezi_leftovers
fix: remove Prezi leftovers
2016-09-22 12:45:20 -05:00
paweldomas
419950ca49 fix(VideoLayout): "connection interrupted" shown only on video
The message about having connectivity issues should be displayed only
on top of the video like the "video problems filter" is.
2016-09-22 12:43:23 -05:00
paweldomas
11953cbb60 feat(conference.js): add isConnectionInterrupted getter 2016-09-22 12:43:12 -05:00
paweldomas
ecfc05bcc8 fix(LargeVideoManager): enable video problems filter on VideoContainer
Only the VideoContainer is interested in showing the video problems
filter which is meant to be displayed when ICE is disconnected.
2016-09-22 12:43:03 -05:00
yanas
b0012b4d63 Merge pull request #921 from jitsi/contaclist-title-update
Always show number of participants badge in toolbar.
2016-09-22 12:40:39 -05:00
damencho
febaf49d07 Always show number of participants badge in toolbar.
Includes showing 1 when user is alone in the room.
2016-09-22 12:02:38 -05:00
paweldomas
e3f3287f14 fix: remove Prezi leftovers 2016-09-22 11:35:35 -05:00
Дамян Минков
fbd2879aa3 Merge pull request #918 from kkrisstoff/make-the-star-configurable
disable_star_indicator added
2016-09-22 10:19:16 -05:00
yanas
4db8faa526 Merge pull request #914 from jitsi/fix_toolbar_ringoverlay
fix(toolbar): Issue with toolbar is positioned under the ring overlay
2016-09-22 10:12:38 -05:00
Дамян Минков
586ea2ae0d Merge pull request #911 from jitsi/small_videolayout_refactoring
Small videolayout refactoring
2016-09-22 09:45:15 -05:00
paweldomas
e39648ce21 ref(LargeVideo): rename to LargeVideoManager
It is confusing when the name of the main class exported from the file
is not the same as the filename.
2016-09-22 08:57:14 -05:00
paweldomas
e0a05c5908 ref(LargeVideo): move VideoContainer to separate file
VideoContainer is a separate being which implements the LargeContainer
and it's confusing to have it in the same file. This was encouraging to
access private parts of the VideoContainer directly(not through
the interface).
2016-09-22 08:57:14 -05:00
paweldomas
2c01fde713 ref(SmallVideo): rename 'isMuted' to avoid confusion 2016-09-22 08:57:01 -05:00
Kostiantyn Pashura
82ebfd9945 disable_star_indicator added 2016-09-22 12:52:53 +03:00
yanas
92641c20f3 Merge pull request #916 from jitsi/contaclist-title-update
Moves the number in the code, not as a translation parameter.
2016-09-21 22:15:48 -05:00
yanas
f145d98a12 Merge pull request #915 from jitsi/update-tooltip-from-profile
Update tooltip from profile
2016-09-21 18:15:54 -05:00
yanas
a3d2c95d80 Merge pull request #913 from jitsi/adjust-feedback-question
Adjusts feedback dialog question.
2016-09-21 18:01:31 -05:00
yanas
a5a9936e25 Adjusts feedback text and takes into account comment 2016-09-21 18:00:21 -05:00
damencho
cfeb03740c Moves the number in the code, not as a translation parameter.
There is sometimes problems with cache and late loading of the translations, this commit avoids showing translation key in the contactlist title, by moving the parameter into the code.
2016-09-21 17:16:00 -05:00
damencho
4ab0fca4d7 Removes tooltip from profile avatar when not clickable. 2016-09-21 16:35:42 -05:00
damencho
df3b7e2dbc Adds utility method to remove tooltips. 2016-09-21 16:35:03 -05:00
hristoterezov
302b0cf776 fix(toolbar): Issue with toolbar is positioned under the ring overlay 2016-09-21 16:34:06 -05:00
yanas
e7cbacf9a2 Merge pull request #912 from jitsi/remove-download-logs-link
Remove download logs link
2016-09-21 16:18:18 -05:00
Любомир Маринов
f9817b12bf Merge pull request #910 from jitsi/fix_jitsi_track_error_import
fix(UI): Show the correct message on NO_DATA_FROM_SOURCE GUM errors
2016-09-21 15:57:32 -05:00
damencho
bbc7aedb48 Adds download logs method for debugging.
Adds a download logs method that can be called from console to take usefull messages for debugging.
console> APP.conference.saveLogs();
2016-09-21 15:46:10 -05:00
damencho
4fdc11c6fb Removes download logs references. 2016-09-21 15:45:08 -05:00
hristoterezov
e1cb75fe04 fix(UI): Show the correct message on NO_DATA_FROM_SOURCE GUM errors 2016-09-21 15:31:49 -05:00
yanas
0bf6d52eef Merge pull request #902 from jitsi/fix-authentication-failed-msg
Fixes message for authentication failed.
2016-09-20 12:47:53 -05:00
yanas
7453198472 Fixes message for authentication failed. 2016-09-20 12:08:44 -05:00
Дамян Минков
0c1120c1a8 Merge pull request #897 from jitsi/settings-css-adjustments
Some css and lang adjustments to settings and contact list.
2016-09-20 10:48:57 -05:00
yanas
efbc84d18b Merge pull request #898 from m-voloshin/tooltip-fix-layer
Adjustment for layer order
2016-09-20 10:45:57 -05:00
Дамян Минков
cdca1a46ef Merge pull request #901 from jitsi/remove-missing-method
Removes missing and unused method.
2016-09-20 10:20:23 -05:00
yanas
689f7dc8f3 Merge pull request #900 from jitsi/delete-css-ds_store
Delete css/.DS_Store
2016-09-20 10:17:35 -05:00
yanas
4ca9349de7 Removes missing and unused method. 2016-09-20 10:16:15 -05:00
Lyubomir Marinov
9d6253455a Delete css/.DS_Store 2016-09-20 10:12:56 -05:00
Maxim Voloshin
388f868165 Adjustment for layer order 2016-09-20 13:15:10 +03:00
yanas
aacb39a439 Some css adjustments to settings and contact list. 2016-09-20 01:14:00 -05:00
yanas
298338f076 Merge pull request #896 from jitsi/fix-feedback-dialog
Feedback dialog changes
2016-09-19 23:52:14 -05:00
yanas
2d2915967c Fixes focus in Feedback and makes animation configurable. 2016-09-19 23:25:03 -05:00
Kostiantyn Pashura
4572e1d344 feedback dialog changes 2016-09-19 22:27:41 -05:00
yanas
f8b200f32c Merge pull request #892 from m-voloshin/blue-badges
Blue badges
2016-09-19 22:27:10 -05:00
yanas
3d4addd9ef Fixes badge font and corrects file name. 2016-09-19 22:07:10 -05:00
yanas
2919a60403 Adds blue badges to contact list and chat. 2016-09-19 21:22:41 -05:00
Paweł Domas
a07858cc72 Merge pull request #891 from jitsi/video-thumbnail-toolbar-fixes
Video thumbnail toolbar fixes
2016-09-19 19:31:08 -05:00
yanas
d1d4674136 Fixes some jsdocs. 2016-09-19 18:04:55 -05:00
Paweł Domas
9b5d4b8ceb Merge pull request #856 from jitsi/implement_muted_ended_track_events
feat(UI): Add UI support for camera issue detection
2016-09-19 16:03:06 -05:00
hristoterezov
abe216a0bb feat(UI): Add UI support for camera issue detection 2016-09-19 14:49:50 -05:00
hristoterezov
84983c341e Merge pull request #844 from jitsi/device-selection-rework
Device selection rework
2016-09-19 13:56:21 -05:00
Paweł Domas
075423ee96 Merge pull request #895 from jitsi/fix-incorrect-json-file
Fix incorrect JSON file
2016-09-19 13:29:06 -05:00
Lyubomir Marinov
2ff77676e2 Fix incorrect JSON file
The extension of the file modules/UI/side_pannels/chat/smileys.json
suggests that the format of the file is JSON. However, it contains
JavaScript RegExp instances which do not represent valid JSON. Such
discrepancies between file extension and format cause failures in
certain tools such as Webpack. Convert the file (both extension and
format) into a valid ES2015 module.
2016-09-19 12:48:38 -05:00
yanas
2da3373e10 Merge pull request #890 from jitsi/updates-watermark-link
Updates handling links on watermarks.
2016-09-18 17:02:12 -05:00
yanas
1486eac752 Applies fixes to thumbnail video toolbar from m-voloshin 2016-09-18 16:58:34 -05:00
yanas
c5adecb6e1 Adds menu icon to font. 2016-09-18 16:42:33 -05:00
damencho
e4c4236386 Updates handling links on watermarks.
When link is missing disable clicking.
2016-09-16 15:17:34 -05:00
yanas
e5e7e043ee Merge pull request #889 from BeatC/tooltips-bg
Change color for tooltip
2016-09-16 12:54:15 -05:00
Ilya Daynatovich
f8d01b4312 Change color for tooltip 2016-09-16 19:05:23 +03:00
Дамян Минков
f0a898c674 Merge pull request #885 from jitsi/add-raise-hand-toggle
Adds raise hand toggle state.
2016-09-16 10:28:12 -05:00
yanas
8b7bdb4957 Changes the raise hand event name to fit better the action 2016-09-16 10:22:50 -05:00
yanas
bd46430434 Small color change 2016-09-16 10:22:50 -05:00
yanas
a1635ccc68 Adds javadoc 2016-09-16 10:22:50 -05:00
yanas
1853fa6fae Adds raise hand toggle state. 2016-09-16 10:22:50 -05:00
Дамян Минков
692f0792e1 Merge pull request #886 from jitsi/fix-some-tooltips
Fixes dominant speaker and raised hand tooltips
2016-09-16 10:18:23 -05:00
yanas
bc222c60e0 Fixes dominant speaker and raised hand tooltips 2016-09-16 00:37:29 -05:00
yanas
96bbf0419c Adds tooltips 2016-09-16 00:04:19 -05:00
yanas
531e3d2765 Merge pull request #884 from jitsi/updates-lock-room
Updates lock room
2016-09-15 22:24:58 -05:00
damencho
02165786f1 Handles case where somebody removed lock of the room while we attempt to join.
Receiving password required, marks the room as locked, but if we try to enter without password, mark it as unlocked till we receive a password required error or we successfully join.
2016-09-15 16:34:02 -05:00
damencho
a449223b40 Clears the password if user cancels password prompt.
Clears the password if user cancel attempt to enter password, as using one instance of locker for multiple attempts keeps the password.
2016-09-15 16:32:10 -05:00
yanas
12344ab486 Merge pull request #883 from jitsi/contactlist-displayname
Syncs contactlist display names with thumbnails.
2016-09-15 15:22:47 -05:00
yanas
b6e18d8a68 Merge pull request #882 from jitsi/fix-hide-toolbar
Fixes hiding toolbar.
2016-09-15 15:10:54 -05:00
damencho
1a0677cb59 Syncs contactlist display names with thumbnails.
Uses the same display names in the contact list as in the thumbnails, for local and remote.
2016-09-15 15:01:48 -05:00
damencho
c483587853 Fixes hiding toolbar.
Receiving messages docks the toolbar to be able to see number of unread messages. We need to undock it when we read the messages. We skip undocking if we are not in video mode (on large), cause stuff like youtube video share is docking/undocking the toolbar.
2016-09-15 14:02:56 -05:00
hristoterezov
9b25467080 Merge pull request #878 from jitsi/video-thumbnail-redesign
Video thumbnails redesign
2016-09-15 13:48:07 -05:00
yanas
f37fd15fca Merge pull request #876 from jitsi/ui-ringoverlay-stop
feat(ringoverlay): Stop ringing after 30s and change the message
2016-09-14 21:44:59 -05:00
yanas
5092f52716 Merge pull request #874 from jitsi/ui-fix-ringoverlay
feat(ringoverlay): Change the background when the avatar is displayed
2016-09-14 21:40:54 -05:00
yanas
0013745783 Video thumbnails redesign 2016-09-14 21:20:54 -05:00
hristoterezov
ad5fa13339 feat(ringoverlay): Stop ringing after 30s and change the message 2016-09-14 17:55:43 -05:00
yanas
e1fa5ecb34 Merge pull request #873 from jitsi/chat-updates
Chat updates
2016-09-14 17:08:34 -05:00
damencho
e1512e3776 Fixes focusing on write area or nickname input when chat is open. 2016-09-14 16:47:10 -05:00
hristoterezov
dab5252746 feat(ringoverlay): Change the background when the avatar is displayed 2016-09-14 16:26:17 -05:00
damencho
d8dd564b06 Fixes clearing message counter on opening the chat. 2016-09-14 15:22:36 -05:00
damencho
407b082780 Removes changing the message icon and flashing on new message. 2016-09-14 15:18:14 -05:00
damencho
a671093489 Introduces chat_container_id variable. 2016-09-14 15:13:15 -05:00
damencho
3ee61df319 Updates talk while muted indication after latest ui changes. 2016-09-14 13:26:28 -05:00
damencho
c43b1f54c7 Shows toolbar before showing talk while muted notification. 2016-09-14 13:26:28 -05:00
damencho
1a554828e1 Adds option to add custom timeout for hiding toolbar. 2016-09-14 13:26:28 -05:00
damencho
974a0334df Updates text for talk while muted. 2016-09-14 13:26:28 -05:00
damencho
e7e7c7d5a0 Handles talk while muted event. 2016-09-14 13:26:28 -05:00
Дамян Минков
29f0c0b311 Merge pull request #870 from jitsi/add-raised-hand-icon
Adds raise hand icon
2016-09-14 12:17:06 -05:00
yanas
955680018f Merge pull request #872 from jitsi/fix-hiding-toolbars
Fixes hiding toolbars.
2016-09-14 12:16:57 -05:00
damencho
686e85cd4f Fixes hiding toolbars.
Schedule new hide check if toolbar is hovered, overlay is shown or the sideBar container is visible (chat, contactlist , etc.).
2016-09-14 11:51:47 -05:00
hristoterezov
297d4e65fc style(gitignore): Add .sync-config.cson 2016-09-14 11:38:43 -05:00
yanas
0e94bf7e0b Merge pull request #871 from jitsi/fix-remote-video-thumb
Fixes parameters for VideoLayout.resizeThumbnails.
2016-09-14 11:00:14 -05:00
damencho
a5bc9625ef Fixes parameters for VideoLayout.resizeThumbnails. 2016-09-14 10:48:38 -05:00
yanas
cbde4f89b2 Adds raise hand icon 2016-09-14 09:00:59 -05:00
yanas
891c108191 Merges fix from m-voloshin for Firefox toolbar 2016-09-14 08:25:11 -05:00
yanas
764d767789 Update _variables.scss 2016-09-14 01:22:33 -05:00
yanas
7ded10cd8d Merge pull request #865 from jitsi/add-raise-hand-button
Adds a possibility to add raise hand as a button
2016-09-13 23:09:18 -05:00
yanas
3b05a16b32 Fix for button appearing in both toolbars 2016-09-13 22:10:13 -05:00
yanas
cf49c8c6ff Adds raise hand button to the side toolbar 2016-09-13 21:21:31 -05:00
yanas
99bf4bc44d Adds a possibility to add raise hand as a button 2016-09-13 21:21:31 -05:00
yanas
929639b06b Merge pull request #863 from jitsi/contact-list-update
Contact list update
2016-09-13 21:21:03 -05:00
Дамян Минков
c18b80c43f Merge pull request #862 from jitsi/make-settings-sections-configurable
Make settings sections configurable
2016-09-13 20:46:03 -05:00
yanas
9ce83250da Fixes console logs 2016-09-13 20:43:44 -05:00
yanas
a9e31a2843 Fixes settings menu for non moderators 2016-09-13 20:43:44 -05:00
yanas
45496b7592 Make settings sections configurable 2016-09-13 20:43:44 -05:00
yanas
4075a5f4f7 Merge pull request #864 from jitsi/origin/ui-redesign-guests-profile
fix(profile_icon): Cursor and background styles
2016-09-13 19:17:45 -05:00
hristoterezov
2d4819257b fix(profile_icon): Cursor and background styles 2016-09-13 18:19:38 -05:00
yanas
406618677b Merge pull request #861 from jitsi/ui-redesign-guests-profile
feat(profile): Don't allow non-guest users to edit their profile
2016-09-13 17:38:51 -05:00
damencho
4c72833f5a Adds an option and hide avatars in contact list. 2016-09-13 17:14:05 -05:00
damencho
e3eaac5bef Disables click toggler. 2016-09-13 17:12:10 -05:00
hristoterezov
f10b13328f feat(profile): Don't allow non-guest users to edit their profile 2016-09-13 16:56:05 -05:00
Дамян Минков
c609cd0ace Merge pull request #859 from jitsi/change-ringing-background
Ringing background changed to gradient
2016-09-13 16:53:32 -05:00
yanas
0396a05b38 Merge pull request #860 from jitsi/css-watermark-link-variable
Moves watermark link to be css variable.
2016-09-13 16:46:53 -05:00
damencho
4a460e09b9 Moves watermark link to be css variable. 2016-09-13 16:46:15 -05:00
yanas
d5d81c1bed Merge pull request #858 from jitsi/ui-redesign-feedback
Ui redesign feedback
2016-09-13 16:44:11 -05:00
yanas
dc6e8f99d8 Ringing background change to gradient 2016-09-13 16:32:00 -05:00
hristoterezov
e02a8c9103 fix(feedback): Styles of Feedback dialog 2016-09-13 16:06:53 -05:00
Maxim Voloshin
7b4941bde9 Redesigned feedback window 2016-09-13 16:06:53 -05:00
hristoterezov
c602839e06 Merge pull request #851 from jitsi/ui-redesign-in-progress
Ui redesign in progress
2016-09-13 14:50:59 -05:00
yanas
2aea6c4120 Remove unused dialog 2016-09-13 13:07:08 -05:00
hristoterezov
a937e025b5 fix(index.html): Remove preload attribute on local video tag 2016-09-13 12:59:59 -05:00
yanas
b9fb510006 Adds ringing.scss, which was missing 2016-09-13 10:47:22 -05:00
Дамян Минков
b3f66aea3b Merge pull request #618 from photoninger/add_firefox_supportedBrowsers
Add Firefox in list of supportedBrowsers for invite emails
2016-09-13 08:29:59 -05:00
yanas
8491fbbd95 Reverts change in makefile 2016-09-12 23:29:26 -05:00
yanas
c6ec96aca5 Adds avatar on stage specific background 2016-09-12 23:24:23 -05:00
yanas
d250623fde Ring overlay improvements and enable buttons fix 2016-09-12 23:24:10 -05:00
hristoterezov
c3b4ecbbd8 fix(ext_toolbar): position of authentication popup 2016-09-12 16:22:51 -05:00
hristoterezov
2b84a149fe fix(toolbar): Button popups 2016-09-12 14:43:34 -05:00
hristoterezov
99ca38d13f Merge pull request #852 from jitsi/make-node-sass
Installs node-sass on every update, fixes a problem in some operating…
2016-09-12 12:54:52 -05:00
damencho
bfc174ffdc Installs node-sass on every update, fixes a problem in some operating systems. 2016-09-12 12:02:43 -05:00
yanas
09f7615a35 Changes icon set. 2016-09-11 23:36:15 -05:00
yanas
fdf0e39516 Fix lock room 2016-09-11 20:49:59 -05:00
yanas
775f389e5c Fix watermark and help position related to toolbar 2016-09-11 17:06:08 -05:00
yanas
f811410b45 Settings re-design 2016-09-11 16:55:06 -05:00
yanas
50e803f1a0 Fixes side toolbar container behavior 2016-09-09 21:26:29 -05:00
Paweł Domas
9a0d8616ed Merge pull request #847 from jitsi/cs-custom-scriptUrl
Skips some url parameters that can inject scripts.
2016-09-08 18:09:04 -05:00
yanas
b4c9816d9f Rename side panels and implement toggle/untoggle policy 2016-09-08 17:38:41 -05:00
yanas
17e28069ab Re-designs toolbars, side panels like setting, contact list 2016-09-08 13:22:50 -05:00
yanas
8562d3d55d Remove bottom toolbar and change side panel position and behavior 2016-09-08 13:16:23 -05:00
damencho
d65479abc9 Skips some url parameters that can inject scripts. 2016-09-08 13:12:56 -05:00
yanas
ed29db290e Add mixins for animations and separate toolbar css 2016-09-08 12:19:45 -05:00
yanas
978c0f2f31 Remove unused import 2016-09-08 12:19:45 -05:00
damencho
62c4ff719e Fixes build. 2016-09-08 11:26:57 -05:00
Ilya Daynatovich
e28f646cef Fixed styles for unsupported browser page 2016-09-08 11:15:17 -05:00
yanas
fb63ed92a8 Resets the main font after remove 2016-09-07 22:07:13 -05:00
yanas
c0097d1e2b Merge pull request #833 from BeatC/configurable-text
Set up SASS and change base font
2016-09-07 22:05:58 -05:00
damencho
0683f94edb Skips storing devices (mic and camera) if there is no user selection.
Skips storing device ids in localstorage if the user hasn't selected a device to use, and keeps using system defaults. Removes calls to private library method for setting initial realDeviceIds, as this had been added to the library.
2016-09-07 16:48:57 -05:00
yanas
fe710d8de9 Merge pull request #842 from jitsi/revert-kicks
Revert "Temprorary disable kicks hack."
2016-09-07 10:59:23 -05:00
damencho
83546a899f Revert "Temprorary disable kicks hack."
This reverts commit 76a7c7b426.
2016-09-07 10:48:13 -05:00
hristoterezov
2eca459ff6 Merge pull request #840 from jitsi/moves-analytics-feedback
Moves analytics event for feedback to the library.
2016-09-07 09:42:30 -05:00
hristoterezov
6b23ad54db Merge pull request #839 from jitsi/removes-ds-error-onjoin
Skips selecting local participant when alone in the room.
2016-09-07 09:41:01 -05:00
damencho
5ef7f38bed Moves analytics event for feedback to the library. 2016-09-06 13:16:54 -05:00
damencho
f86056c4f8 Skips selecting local participant when alone in the room. 2016-09-06 12:00:13 -05:00
Emil Ivov
f19b364871 Merge pull request #838 from jitsi/fix_audio_not_working_msg
fix(lang): Change the message in the mic not working error dialog
2016-09-06 11:33:54 -05:00
hristoterezov
29f1d96d87 fix(lang): Change the message in the mic not working error dialog 2016-09-06 11:30:51 -05:00
yanas
2f966b7da4 Merge pull request #829 from BeatC/fix-sharing-resize-after-hiding-filmstrip
Fix problem with resizing
2016-09-04 20:16:08 -05:00
bgrozev
e3f599fbc0 Merge pull request #834 from jitsi/disable-kick-until-fixed-hack
Temprorary disable kicks hack.
2016-09-02 11:44:15 -05:00
yanas
76a7c7b426 Temprorary disable kicks hack. 2016-09-02 11:19:17 -05:00
Ilya Daynatovich
4044e11da2 Set up SASS and change base font 2016-09-02 12:55:33 +03:00
Дамян Минков
a07c21b2a3 Merge pull request #832 from jitsi/remove-avatar-url
Remove avatar url - not used anymore
2016-09-01 16:55:11 -05:00
yanas
109bedba75 Update index.html 2016-09-01 16:37:07 -05:00
Дамян Минков
aced860ba4 Merge pull request #830 from jitsi/detect_local_media_not_working
Shows dialog when lib-jitsi-meet report microphone issues
2016-09-01 14:16:50 -05:00
hristoterezov
d33324c198 Merge pull request #831 from jitsi/analytics-remove-browser-suffix
Adds browser name as parameter.
2016-09-01 14:16:41 -05:00
damencho
adb1b33441 Adds browser name as parameter. 2016-09-01 14:13:17 -05:00
yanas
238e1f1bea Merge pull request #814 from BeatC/fix-video-preview-when-resize
Fix problem with last video preview
2016-09-01 13:45:56 -05:00
hristoterezov
4c9b6ce193 Shows dialog when lib-jitsi-meet report microphone issues 2016-09-01 12:57:21 -05:00
Paweł Domas
5ef547d285 Merge pull request #828 from SamWhited/mod_token_use_proper_path
Use valid path for HTTP token fetches
2016-09-01 10:02:47 -05:00
Ilya Daynatovich
aea99b8ffb Fix problem with resizing 2016-09-01 08:53:51 +03:00
Sam Whited
9ec120d7cb Use valid path for HTTP token fetches 2016-08-31 16:25:49 -05:00
Дамян Минков
e2c5439112 Merge pull request #821 from SamWhited/hql1748_update_lock_icon_on_config_change
Update lock icon when moderator changes state
2016-08-31 15:53:17 -05:00
hristoterezov
19362d1904 Merge pull request #826 from jitsi/fix-random-avatar
Fixes random avatar
2016-08-31 15:46:53 -05:00
hristoterezov
1a69fd8a49 Merge pull request #822 from jitsi/removes-atarURL
Removes avatar url from UI.
2016-08-31 15:39:00 -05:00
yanas
224670ed03 Merge pull request #827 from jitsi/fix-missing-indications-on-no-video-device
Moves local video thumb initializations where they belong.
2016-08-31 14:55:12 -05:00
damencho
bb705e32d9 Moves local video thumb initializations where they belong.
Moves local video thumb initializations where they belong in the local video constructor. Fixes a problem when there is no video device, then audio levels and gsm bars are missing. We were doing this initializations every time a video device is changed.
2016-08-31 14:18:09 -05:00
Sam Whited
3e269978d9 Update lock icon when moderator changes state 2016-08-31 13:59:08 -05:00
Paweł Domas
9ba62c320b Merge pull request #825 from SamWhited/mod_token_improvements
Mod token improvements
2016-08-31 12:48:04 -05:00
damencho
8e6d7d3960 Sends and dispatches avatarId command. 2016-08-31 11:41:17 -05:00
damencho
3138748f57 Uses avatarId from settings.
Removes unused variable bottomToolbarEnabled.
2016-08-31 11:40:06 -05:00
damencho
6f10156bf3 Adds avatarId and respect it with lowest priority. 2016-08-31 11:37:11 -05:00
damencho
3852b34397 Adds avatarId to Settings. 2016-08-31 11:24:51 -05:00
Sam Whited
3128628d09 Populate the token cache 2016-08-31 09:30:07 -05:00
Sam Whited
d8c4c0627a SHA256 hash the kid claim before fetching tokens 2016-08-31 09:24:15 -05:00
hristoterezov
d9559ecf63 Merge pull request #817 from jitsi/fix-shortcut-tooltips
Fix shortcut appearing in tooltip of wrong buttons
2016-08-30 15:30:09 -05:00
yanas
2b492883ca Some code optimisations. 2016-08-30 14:14:52 -05:00
damencho
5ab6c551df Disables storing display name and email when using overlay ring. 2016-08-30 14:10:20 -05:00
damencho
0e27f471f1 Removes avatarURL from settings UI.
Removes storing avatarURL in localstorage and retrieving it.
2016-08-30 14:09:07 -05:00
hristoterezov
ba477ad720 Merge pull request #816 from jitsi/improve-device-errors
Updates string for not found devices.
2016-08-30 13:04:44 -05:00
yanas
7858c157c1 Fix shortcut appearing in tooltip of wrong buttons 2016-08-29 23:56:20 -05:00
damencho
a5d3cc63c3 Updates string for not found devices.
The user can be in case where there is no audio or no video device at all, so removing the requested word from the message.
2016-08-29 16:46:44 -05:00
hristoterezov
cac7ccf176 Merge pull request #812 from jitsi/attach-shortcuts-to-features
Attach keyboard shortcuts to features
2016-08-29 16:05:12 -05:00
yanas
9693cba17a Registers filmstrip shortcut from bottom toolbar 2016-08-29 15:47:24 -05:00
yanas
45e38ae4c9 Fix wrong import 2016-08-29 13:04:55 -05:00
Paweł Domas
ad68d535b4 Merge pull request #815 from SamWhited/mod_auth_token_tweaks
mod_auth_token: Misc minor fixes
2016-08-29 10:23:44 -05:00
Sam Whited
bb56ea4b33 mod_auth_token: Add semicolons
Remove unnecessary cjson config
2016-08-29 09:39:47 -05:00
Ilya Daynatovich
ba822eaeed Fix problem with last video preview 2016-08-29 16:39:57 +03:00
yanas
7076ada6f4 Attach keyboard shortcuts to features 2016-08-28 22:59:23 -05:00
Paweł Domas
84834dc4e6 Merge pull request #808 from SamWhited/auth_token_asap
Add support for fetching public keys from a server to mod_auth_token
2016-08-26 16:51:17 -05:00
hristoterezov
f9b3f34593 Merge pull request #810 from jitsi/fix-hangup-multiple-feedback-windows
Fix hangup triggering multiple feedback windows
2016-08-26 16:30:31 -05:00
Sam Whited
c17576a931 mod_auth_token: Don't timeout finished requests 2016-08-26 16:19:01 -05:00
yanas
570124058c Addresses comment about Feedback dependency 2016-08-26 16:07:20 -05:00
Sam Whited
3793119209 mod_auth_token: Fix cache hit log line 2016-08-26 16:03:08 -05:00
Sam Whited
7fb18d1cb3 Fix broken claims comparison 2016-08-26 14:47:34 -05:00
Sam Whited
4fc86175e1 mod_auth_token: Set room name on session 2016-08-26 14:41:06 -05:00
Sam Whited
c951f7f3e9 Add missing semicolons 2016-08-26 14:11:50 -05:00
yanas
777217bd75 Fixes hangup triggering multiple feedbacks. 2016-08-26 11:42:45 -05:00
yanas
2bb637e140 Fixes hangup triggering several times 2016-08-26 11:42:45 -05:00
Дамян Минков
b5c1c95a15 Merge pull request #807 from jitsi/fix_ss_external_install
Fixes the issue with SS external installation dialog is not closed after the plugin has been installed
2016-08-26 11:40:35 -05:00
Sam Whited
f2e369cfc0 mod_auth_token: Remove broken path.join 2016-08-26 09:48:02 -05:00
yanas
6329271731 Merge pull request #806 from BeatC/fix-help-dialog-behind-filmstrip
Change z-index of keyboard-shortcuts
2016-08-25 14:15:57 -05:00
yanas
1428559546 Merge pull request #805 from jitsi/fix-moderator-mute
Fixes muting particular remote participant.
2016-08-25 14:15:01 -05:00
hristoterezov
5c9a85e928 Fixes the issue with SS external installation dialog is not closed after the plugin has been installed 2016-08-25 13:27:58 -05:00
Illia Daynatovich
00355caf8d HQL-1829 Change z-index of keyboard-shortcuts 2016-08-25 12:12:29 +03:00
Sam Whited
feb1d9d8e1 Add an LRU cache to mod_auth_token 2016-08-24 15:28:13 -05:00
Sam Whited
7f2fa9597c Add basic ASAP support to mod_auth_token
See: http://s2sauth.bitbucket.org/
2016-08-24 14:08:21 -05:00
damencho
246ab88a3e Fixes muting particular remote participant.
There was a bug that the handlers for menuItem for mute and kick are added for all remote participants. When clicked multiple handlers are executed and the action will be executed for all remote participants.
2016-08-23 18:37:41 -05:00
Дамян Минков
49cc4ae087 Merge pull request #802 from jitsi/fix-video-linux-qt
Fix video thumbnails for Qt on Linux.
2016-08-23 15:36:52 -05:00
hristoterezov
8d466ad77f Merge pull request #801 from jitsi/reloads-update
Updates statistics implementation.
2016-08-23 10:20:44 -05:00
yanas
f824f78db9 Fix video thumbnails for Qt on Linux. 2016-08-22 16:31:20 -05:00
damencho
35f592bb2c Adds optional label to statistics implementation. 2016-08-22 15:18:13 -05:00
bgrozev
25a6728acc Merge pull request #663 from cmrd-senya/patch-1
Update manual-install.md
2016-08-21 14:36:06 -05:00
jitsi-pootle
169da33411 New files added from translate.jitsi.org based on templates 2016-08-21 19:30:40 +00:00
George Politis
db70cf4aa9 Merge pull request #795 from jitsi/hide-download-log
Hide download log by default
2016-08-17 16:00:09 -05:00
yanas
dcfab4401f Update main.css 2016-08-17 15:50:26 -05:00
hristoterezov
d85a91ae49 Merge pull request #792 from jitsi/remove-bottom-toolbar-button-separators-1
Remove unused css class
2016-08-16 16:53:49 -04:00
hristoterezov
a3b1a80658 Merge pull request #791 from jitsi/remove-bottom-toolbar-button-separators
Remove bottom toolbar button separators
2016-08-16 16:53:03 -04:00
yanas
db20f145fb Remove unused css class 2016-08-16 15:20:32 -05:00
yanas
986bfd02b3 Remove bottom toolbar button separators 2016-08-16 15:14:30 -05:00
Paweł Domas
57506934f2 Merge pull request #790 from jitsi/show-toolbar-in-ring-overlay
Show the toolbar even if in a ring overlay
2016-08-16 15:07:51 -05:00
yanas
372a5e2a49 Update UI.js
Show the toolbar even if in a ring overlay.
2016-08-16 13:44:34 -05:00
Дамян Минков
726b972223 Merge pull request #789 from bgrozev/cleanup
refactor: removes unused code.
2016-08-15 22:59:35 -05:00
Boris Grozev
65300b34df refactor: removes unused code. 2016-08-15 22:57:36 -05:00
Paweł Domas
d7a7733d30 Merge pull request #787 from bgrozev/resolution-change
Brings back resolution changes logging to callstats.
2016-08-15 15:16:05 -05:00
Boris Grozev
7154fd4d39 Brings back resolution changes logging to callstats. 2016-08-15 14:40:55 -05:00
Дамян Минков
45830c1086 Merge pull request #785 from bgrozev/stream-switch-logs
Logs stream switch delays using analytics instead of callstats.
2016-08-12 16:51:39 -05:00
Дамян Минков
202ad0542f Merge pull request #784 from bgrozev/round-analytics-values
Rounds floats passed to analytics (instead of truncating them).
2016-08-12 16:51:29 -05:00
Boris Grozev
c59d9e7c8b Rounds floats passed to analytics (instead of truncating them). 2016-08-12 15:22:38 -05:00
Boris Grozev
f4f0a7d90e Logs stream switch delays using analytics instead of callstats. 2016-08-12 15:13:27 -05:00
damencho
ec98e6fdff Revert "Skips the analytics file from main folder when creating deb." Excluding file, excludes it and from subfolders.
This reverts commit 157bb1931d.
2016-08-11 12:53:37 -05:00
Дамян Минков
c68bcb8fbc Merge pull request #782 from jitsi/fix-unsupported-browser-images
Fix unsupported browser images
2016-08-11 11:08:59 -05:00
yanas
c37876a8b7 Fix unsupported browser images
Fixes the path of the unsupported browser images
2016-08-11 10:14:06 -05:00
bgrozev
23a805b79c Merge pull request #780 from jitsi/fix-duplicate-analytics-files
Skips the analytics file from main folder when creating deb.
2016-08-10 16:09:01 -05:00
damencho
157bb1931d Skips the analytics file from main folder when creating deb. 2016-08-10 15:47:54 -05:00
bgrozev
e59ad67055 Merge pull request #779 from jitsi/fix_ss_from_popup
Implements extension external installation for popup windows
2016-08-10 15:25:35 -05:00
hristoterezov
97b9b67768 Merge pull request #777 from jitsi/analytics-move2
Moves loading of analytics in the library.
2016-08-10 15:19:36 -05:00
hristoterezov
f899d16a79 Implements extension external installation for popup windows 2016-08-10 14:13:32 -05:00
damencho
53288fc997 Moves analytics js next to libraries so it can be dynamically loaded. 2016-08-10 13:28:15 -05:00
yanas
7c89f2b7d1 Merge pull request #778 from jitsi/fix-toolbar-hide
Fixes the check whether we are hovering over the toolbar.
2016-08-09 18:04:04 -05:00
damencho
2c39514359 Fixes the check whether we are hovering over the toolbar. 2016-08-09 17:39:24 -05:00
damencho
536ffb31e0 Moves loading of analytics in the library. 2016-08-09 15:04:40 -05:00
Дамян Минков
a50a980de4 Merge pull request #776 from jitsi/isolate-object-fix-browser-specific
Isolate object-fit fix for Windows Qt browser only
2016-08-08 17:19:56 -05:00
yanas
da0898a066 Isolate object-fit fix for Windows Qt browser only 2016-08-08 17:03:13 -05:00
George Politis
541f83cf71 Merge pull request #774 from jitsi/analytics-move
Analytics move
2016-08-05 13:49:05 -05:00
Paweł Domas
fe6588516f Merge pull request #773 from jitsi/object-fit-fix-and-refactoring-around-it
Object fit fix and refactoring around it
2016-08-05 10:25:36 -05:00
damencho
6651168dd3 Moves render and ttfm connection times to the library. 2016-08-05 09:52:09 -05:00
yanas
ced7da405d Merge pull request #772 from jitsi/crash_no_mediastreamtrack
Fix a crash on IE/Safari when plugin is not installed
2016-08-04 16:24:03 -05:00
yanas
fd836560aa Fix object-fit on some browsers 2016-08-04 15:56:04 -05:00
yanas
5654d34ee8 Fix remote participant menu for moderator 2016-08-04 15:24:36 -05:00
damencho
6302e42229 Uses analytics from lib-jitsi-meet and adds new events.
Adds more analytics events for shortcuts, recording and shared video. Changes the way we calculate ttfm.
2016-08-04 14:19:09 -05:00
paweldomas
34a24ce290 Fix a crash on IE/Safari when plugin is not installed 2016-08-04 09:37:04 -05:00
bgrozev
71a778b65c Merge pull request #771 from jitsi/IE10-URL-fix
Fix broken invite URL on IE10
2016-08-03 15:12:25 -05:00
paweldomas
62fa4dffa8 Fix broken invite URL on IE10
IE 10 does not support "window.location.origin"
2016-08-03 14:45:50 -05:00
yanas
d3dd643a88 Revert "Fix object-fit: cover not supported for video"
This reverts commit db0c4e95f7.
2016-08-03 13:03:42 -05:00
yanas
6116df9411 Revert "Change the default font to Helvetica Neue"
This reverts commit b309ef25fd.
2016-08-03 13:01:46 -05:00
yanas
db0c4e95f7 Fix object-fit: cover not supported for video 2016-08-03 13:01:46 -05:00
Дамян Минков
9a25db34aa Merge pull request #763 from jitsi/hide_toolbar_when_ringing
Hide the toolbar when the the ring overlay is displayed
2016-08-03 13:00:52 -05:00
Paweł Domas
c7710bfe1c Merge pull request #769 from jitsi/ttfm
Adds analytics event and console log for TTFM (time to first media).
2016-08-03 12:52:20 -05:00
Дамян Минков
dd7502f8de Merge pull request #754 from bgrozev/log-json
Formats the resolution change log as JSON.
2016-08-03 12:50:22 -05:00
damencho
df01358fb8 Adds comment. 2016-08-03 12:49:19 -05:00
Paweł Domas
d3cd634bff Merge pull request #770 from jitsi/update-config-inclusion
Update config inclusion
2016-08-03 12:39:26 -05:00
damencho
1454a28a69 Fixes serving interface_config when using jetty. 2016-08-03 11:53:21 -05:00
damencho
7251c7a641 Fixes a problem when using base for the page.
The problem is when not using / before virtual files and having a base for the page nginx can search for the file in wrong location.
2016-08-03 11:52:56 -05:00
damencho
06c636311d Adds analytics event and console log for TTFM (time to first media). 2016-08-03 11:19:09 -05:00
hristoterezov
b457166726 Merge pull request #765 from jitsi/analytics-update2
Adds analytics event for rendering audio and video.
2016-08-02 14:53:19 -05:00
damencho
562c2e38db Adds analytics event for rendering audio and video. 2016-08-02 13:19:03 -05:00
hristoterezov
e2c16c9c11 Merge pull request #764 from jitsi/switch_to_luajwt
Switch back to 'luajwt' in order to fix broken JWT
2016-08-02 13:13:37 -05:00
hristoterezov
db91040443 Merge pull request #761 from jitsi/updates-index-title
Moves favicon into the title html.
2016-08-02 12:38:02 -05:00
paweldomas
9f3c209096 Switch back to 'luajwt' in order to fix broken JWT
Temporarily reference 'luajwtjitsi' luarock for immediate
deployment until our changes with RS256 support
eventually get merged with the master
2016-08-02 12:35:48 -05:00
paweldomas
123b5abb08 Hide the toolbar when the the ring overlay is displayed 2016-08-02 09:04:31 -05:00
damencho
6cb89891ce Moves favicon into the title html.
Moves favicon into the title html with all metadata for easy overriding. Moves the title html inclusion after all the connection optimisations to avoid downloading the icon to interfere those optimisations.
2016-08-01 17:11:16 -05:00
damencho
ff68caaa16 Adds a comment and disables jshint error.
Merge pull request #760 from aaronkvanmeerten/master
2016-08-01 17:00:47 -05:00
Aaron van Meerten
a58190a935 Interface Config loaded via SSI into index.html to allow deployment-specific overrides even when using CDN
update whitespace in toolbar buttons array to allow value to be more easily overridden
2016-08-01 16:42:15 -05:00
Дамян Минков
372278d163 Merge pull request #755 from jitsi/change-default-font
Change the default font to Helvetica Neue
2016-08-01 16:10:56 -05:00
Paweł Domas
a5a7b63abf Merge pull request #759 from jitsi/analytics-update
Adds more analytics events.
2016-08-01 15:43:31 -05:00
damencho
e9b7aaea84 Adds more analytics events. 2016-08-01 15:03:38 -05:00
George Politis
132d823f54 Merge pull request #758 from jitsi/updates-title-meta
Moves meta html headers inside title.html file.
2016-08-01 14:42:11 -05:00
George Politis
75eb30b09d Merge pull request #757 from jitsi/remove_query_string
Removes query arguments from the invite URL/address bar URL.
2016-08-01 14:22:43 -05:00
damencho
baa60347fb Moves meta html headers inside title.html file. 2016-08-01 14:18:54 -05:00
paweldomas
8de3e0ff0b Remove query parameters from the URL visible to the user 2016-08-01 13:44:42 -05:00
paweldomas
443c29f505 No longer use full href for the invite URL 2016-08-01 13:44:35 -05:00
yanas
b309ef25fd Change the default font to Helvetica Neue 2016-08-01 10:58:12 -05:00
Paweł Domas
0ea5175354 Merge pull request #737 from SamWhited/jwt_signing_none_check
Check for "none" alg in JWT signing
2016-08-01 08:33:08 -05:00
bgrozev
10517115c3 Merge pull request #752 from jitsi/fix_gsm_bars_resolution
Preventing the client for using/sending resolution data from/to remote participants
2016-07-28 15:37:38 -05:00
Boris Grozev
ddb356482f Formats the resolution change log as JSON. 2016-07-28 11:11:34 -05:00
hristoterezov
6ae35fb21d Preventing the client for using/sending resolution data from/to remote participants 2016-07-27 12:46:07 -05:00
bgrozev
330597182c Merge pull request #751 from jitsi/dc_send_throw
Handles the errors thrown by the data channel methods
2016-07-26 09:34:06 -05:00
Boris Grozev
adefa40dcc Simplifies code, reduces the scope of "try". 2016-07-26 08:32:25 -05:00
hristoterezov
8d162609e0 Handles the errors thrown by the data channel methods 2016-07-25 17:04:39 -05:00
Paweł Domas
0a51ddd7ef Merge pull request #750 from jitsi/fix_con_interrupted
Fixes issue with not removing connection interrupt label after reload
2016-07-25 14:09:30 -05:00
hristoterezov
c3ae8669e8 Fixes issue with not removing connection interrupt label after reload 2016-07-25 13:57:01 -05:00
Paweł Domas
974ba47e3c Merge pull request #748 from jitsi/gsm_bars_interrupted
Fixes the gsm bars during ice disconnected
2016-07-22 14:02:19 -05:00
hristoterezov
9d170e4c59 Fixes the gsm bars during ice disconnected 2016-07-22 13:42:41 -05:00
bgrozev
ae0e950c16 Merge pull request #746 from jitsi/dc_stats2
Changes the connection quality stats to be sent by the data channels
2016-07-22 07:34:01 +02:00
Дамян Минков
79412f20ab Updates quick-install doc with the new repo. 2016-07-21 22:53:58 -05:00
hristoterezov
7ea047cf1b Merge pull request #743 from jitsi/handle-initial-videotype
Uses videoType from the video track for the initial value.
2016-07-21 17:16:17 -05:00
hristoterezov
4bf5d69002 Changes the connection quality stats to be sent by the data channels 2016-07-21 17:00:57 -05:00
bgrozev
0e2d8a323a Merge pull request #732 from champtar/shortcut-help
Improve keyboard shortcut handling
2016-07-21 19:53:49 +02:00
Etienne CHAMPETIER
9a4cee1818 Improve keyboard shortcut handling
Use KeyboardEvent.key if available,
match both lower and upper case letters to keep previous behaviour

KeyboardEvent is a mess.

KeyboardEvent.which gives you, in theory, a decimal representation of the key pressed.
"r" or "R" gives you 82, which is "R", you can look at KeyboardEvent.shiftKey,
but you don't have access to capslock...

Maybe you want to use numbers, but of course NumPad will not give you the same than
"normal" numbers ...

Now if you use something else than letter, for exemple "?",
on a QWERTY keyboard "/" and "?" gives you 191,
on a AZERTY keyboard "," and "?" gives you 188, so we have to stick to letters.

This was for keydown and keyup events, keypressed event return the real char
(lower "a", "/", "?", ...) but it fails in some cases

The only non broken property is KeyboardEvent.key,
but it's only supported since Chrome 51, Opera 38, and not supported by Safari
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

A good reference & test:
http://unixpapa.com/js/testkey.html
http://unixpapa.com/js/key.html

Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
2016-07-21 16:58:52 +02:00
bgrozev
b0957f387e Merge pull request #744 from jitsi/revert-741-dc_stats
Revert "Changes the connection quality stats to be sent by the data channels"
2016-07-21 08:36:12 +02:00
bgrozev
1f8dc54368 Revert "Changes the connection quality stats to be sent by the data channels" 2016-07-21 08:33:04 +02:00
damencho
74ece3a775 Uses videoType from the video track for the initial value.
Handles the case where the remote track is with initial value of camera and no further events are received for video type changed.
2016-07-20 22:13:26 -05:00
Дамян Минков
60f7b9ab93 Merge pull request #741 from jitsi/dc_stats
Changes the connection quality stats to be sent by the data channels
2016-07-20 16:13:51 -05:00
Paweł Domas
f8d555790b Merge pull request #742 from jitsi/add_languages
Adds Armenian and Occitan languages
2016-07-20 15:41:44 -05:00
hristoterezov
4ff297730c Adds Armenian and Occitan languages 2016-07-20 15:38:50 -05:00
ibauersachs
29050ea917 Commit from translate.jitsi.org by user ibauersachs.: 118 of 250 strings translated (10 fuzzy). 2016-07-20 20:19:10 +00:00
ibauersachs
c4c0bc1c37 Commit from translate.jitsi.org by user ibauersachs.: 150 of 250 strings translated (7 fuzzy). 2016-07-20 20:19:00 +00:00
ibauersachs
0f52f4e5a1 Commit from translate.jitsi.org by user ibauersachs.: 160 of 250 strings translated (6 fuzzy). 2016-07-20 20:18:47 +00:00
ibauersachs
cff7a5c2f5 Commit from translate.jitsi.org by user ibauersachs.: 151 of 250 strings translated (7 fuzzy). 2016-07-20 20:18:36 +00:00
ibauersachs
626d9a40ed Commit from translate.jitsi.org by user ibauersachs.: 163 of 250 strings translated (8 fuzzy). 2016-07-20 20:18:28 +00:00
ibauersachs
b8f26c58e3 Commit from translate.jitsi.org by user ibauersachs.: 238 of 250 strings translated (0 fuzzy). 2016-07-20 20:18:13 +00:00
ibauersachs
9dbd9b8405 Commit from translate.jitsi.org by user ibauersachs.: 237 of 250 strings translated (1 fuzzy). 2016-07-20 20:18:03 +00:00
ibauersachs
08f200f0eb Commit from translate.jitsi.org by user ibauersachs.: 203 of 250 strings translated (1 fuzzy). 2016-07-20 20:17:33 +00:00
ibauersachs
9fa65ccda6 Commit from translate.jitsi.org by user ibauersachs.: 203 of 250 strings translated (1 fuzzy). 2016-07-20 20:17:24 +00:00
hristoterezov
d0fa9e7ef1 Changes the connection quality stats to be sent by the data channels 2016-07-20 15:16:21 -05:00
Paweł Domas
d7c1976a52 Merge pull request #740 from jitsi/add_languages
Adds new languages to the language select box
2016-07-20 15:11:42 -05:00
hristoterezov
39e71efb2f Adds new languages to the language select box 2016-07-20 15:04:14 -05:00
Ingo Bauersachs
855bcf8fe3 Remove pt_BR language files 2016-07-20 21:25:37 +02:00
ibauersachs
97069f1dc6 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-20 19:28:38 +00:00
ibauersachs
bc3c6412f6 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 21:08:44 +00:00
ibauersachs
51dcb2befb Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 21:08:32 +00:00
ibauersachs
805c9e4eda Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 21:08:23 +00:00
Ingo Bauersachs
a38e85b39c Update languages.json 2016-07-19 22:51:38 +02:00
Ingo Bauersachs
96bd3a54cb Update languages.json 2016-07-19 22:37:24 +02:00
ibauersachs
4fd5fba768 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 20:38:09 +00:00
ibauersachs
06027ea8e5 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 20:37:30 +00:00
ibauersachs
6f38d58954 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 20:37:10 +00:00
Ingo Bauersachs
30c964f1e3 Add Portuguese (Brazil) 2016-07-19 22:29:07 +02:00
ibauersachs
2a8e0bd866 Commit from translate.jitsi.org by user ibauersachs.: 249 of 249 strings translated (0 fuzzy). 2016-07-19 20:33:10 +00:00
Дамян Минков
644e12929c Merge pull request #733 from mbell8903/patch-1
Change reference to lib-jitsi-meet to use full github url
2016-07-19 10:50:06 -05:00
Sam Whited
d625b8e3f3 Check for "none" alg in JWT signing 2016-07-18 13:31:30 -05:00
hristoterezov
5b884806d2 Merge pull request #736 from jitsi/lock-error-dialog
Avoids multiple dialog when showing lock attempt errors.
2016-07-15 16:02:26 -05:00
damencho
7aa47647f0 Avoids multiple dialog when showing lock attempt errors. 2016-07-15 15:40:18 -05:00
Дамян Минков
c779dbe8ad Merge pull request #735 from jitsi/fix_typo
Fixes typo
2016-07-15 13:18:57 -05:00
Дамян Минков
64ee01d831 Merge pull request #734 from jitsi/no_audio_element_fix
Fixes the issue with missing audio element for remote participants
2016-07-15 13:18:47 -05:00
hristoterezov
52c6bbe731 Fixes typo 2016-07-15 13:14:10 -05:00
hristoterezov
1963972f75 Fixes the issue with missing audio element for remote participants 2016-07-15 13:12:14 -05:00
Michael Bell
85d0c62c1d Change reference to lib-jitsi-meet to use full github url
This resolves issue #694
2016-07-14 11:23:47 -04:00
Дамян Минков
dfa9bab9e1 Merge pull request #724 from jitsi/reloads
Implements support for conference reloads
2016-07-13 13:19:06 -05:00
champtar
3ed1532f25 Commit from translate.jitsi.org by user champtar.: 249 of 249 strings translated (0 fuzzy). 2016-07-13 11:01:42 +00:00
ibauersachs
115420db82 Commit from translate.jitsi.org by user ibauersachs.: 249 of 249 strings translated (0 fuzzy). 2016-07-12 16:39:53 +00:00
bgrozev
d2a6c4a97f Merge pull request #719 from jitsi/jibri-retries
Jibri retries
2016-07-11 15:53:25 -05:00
hristoterezov
c04874b087 Merge pull request #728 from jitsi/jwt-login-service-2
Jwt login service 2
2016-07-11 15:12:40 -05:00
Дамян Минков
a0b3018ea0 Merge pull request #729 from jitsi/issue_716
Fixes issue #716
2016-07-11 12:46:36 -05:00
hristoterezov
e46d45adea Fixes issue #716 2016-07-11 11:57:24 -05:00
paweldomas
f977030bd6 Add support for JWT login service 2016-07-11 13:47:10 +02:00
paweldomas
38fc1c01d4 Move XMPP login prompt handling to AuthHandler 2016-07-11 13:47:02 +02:00
hristoterezov
2f202deedf Merge branch 'master' into reloads 2016-07-08 16:03:10 -05:00
Дамян Минков
08bd40bb26 Merge pull request #722 from bgrozev/logging
Logs resolution changes to callstats.
2016-07-08 15:50:14 -05:00
Дамян Минков
28700173a0 Merge pull request #723 from bgrozev/doc
Adds documentation.
2016-07-08 15:49:48 -05:00
Boris Grozev
66a46fc580 Adds documentation. 2016-07-08 15:17:28 -05:00
Boris Grozev
de41977c77 Logs resolution changes to callstats. 2016-07-08 15:16:27 -05:00
hristoterezov
45c420561a Merge pull request #721 from jitsi/match-jquery-ui-version
Match the exact version of jquery-ui.
2016-07-08 14:43:22 -05:00
damencho
e240b15d61 Match the exact version of jquery-ui.
Using "compatible version" as ^... matches latest version 1.12.0 and not 1.10.5 (matches >=1.10.5 < 2.0.0) and this prevents it building from source with latest nodejs on clean environment.
2016-07-08 14:41:25 -05:00
bgrozev
486058834e Merge pull request #720 from jitsi/make-update
Executes npm update before making.
2016-07-08 10:54:45 -05:00
damencho
3e473ea9d7 Executes npm update before making.
Executes npm update before making, in order to update latest version of packages like lib-jitsi-meet which are updated from git. The npm install method is supposed to only resolve dependencies and not update to latest versions.
2016-07-08 10:52:04 -05:00
paweldomas
62dd54ab31 Display spinner for RETRYING recording status 2016-07-08 14:53:00 +02:00
paweldomas
b3e02add3d Fix moveToCorner method
If the class was contained the old code was removing it
2016-07-08 14:51:15 +02:00
hristoterezov
7bf9a82f0b Implements conference reload support 2016-07-07 20:44:04 -05:00
bgrozev
ce5ff20d5b Merge pull request #718 from jitsi/dialogs-update
Dialogs update
2016-07-06 14:52:45 -05:00
damencho
615daa8c9f Updates close function parameters. 2016-07-06 13:52:59 -05:00
damencho
5dffddceec Make sure we have only one dialog instance. 2016-07-06 13:26:27 -05:00
damencho
d5de49b5cf Returns the dialog instances that were created and adds an optional close callback. 2016-07-06 13:10:45 -05:00
damencho
62f7553ba4 Updates two button dialogs to be only single instance. 2016-07-06 11:00:04 -05:00
hristoterezov
b7ad6b606a Merge pull request #717 from tsareg/error_types
Expose JitsiTrackError through JitsiMeetJS.errorTypes.JitsiTrackError
2016-07-06 09:17:40 -05:00
tsareg
60c2ee41e3 Expose JitsiTrackError through JitsiMeetJS.errorTypes.JitsiTrackError 2016-07-06 16:21:26 +03:00
damencho
64475143cf Removes keyring dependency to switch to new build machine. 2016-06-30 15:31:35 -05:00
damencho
c1122eae3a Adds dependency to new keyring and new repo update. 2016-06-30 15:22:22 -05:00
Дамян Минков
1792b1ed85 Merge pull request #711 from jitsi/room_name_undefined
Fixes issue with room name parameter = undefined
2016-06-28 11:52:45 -05:00
hristoterezov
d624f2584d Fixes issue with room name parameter = undefined 2016-06-28 11:21:37 -05:00
Дамян Минков
f39f8d14fd Merge pull request #706 from jitsi/ui-improvements-and-styles
UI improvements and styles
2016-06-24 14:43:51 -05:00
yanas
770b003163 Change global font, unify fonts, colors and more 2016-06-24 14:09:34 -05:00
Дамян Минков
702b177e06 Merge pull request #708 from jitsi/gsm_bars_fix
Fixes issue with gsm bars for remote participants are always full
2016-06-24 12:26:48 -05:00
hristoterezov
3c0295e294 Removes console.debug 2016-06-24 12:25:21 -05:00
hristoterezov
970e8c764c Fixes issue with gsm bars for remote participants are always full 2016-06-24 12:22:51 -05:00
yanas
1d393f5786 Merge pull request #701 from tsareg/gum_permission_dialog_guidance
Show overlay with guidance for gUM permission prompts
2016-06-24 11:17:38 -05:00
tsareg
f03b228eea Merge remote-tracking branch 'remotes/upstream/master' into gum_permission_dialog_guidance 2016-06-24 13:02:58 +03:00
tsareg
d149ba6fc5 Fire an optional JitsiMediaDevices.PERMISSION_PROMPT_IS_SHOWN event when browser shows user media permission prompt when calling createLocalTracks 2016-06-24 12:47:13 +03:00
Дамян Минков
f3dc6f15e4 Merge pull request #705 from bgrozev/esc-shortcut
Hide the shortcuts panel when the Escape key is pressed.
2016-06-23 16:24:10 -05:00
tsareg
8ca282079a Changes after code review 2016-06-23 11:03:26 +03:00
yanas
769644a63f Merge pull request #700 from bgrozev/raise-hand2
Raise hand2
2016-06-22 21:59:22 -05:00
Boris Grozev
2cefea3677 Hide the shortcuts panel when the Escape key is pressed. 2016-06-22 13:30:00 -05:00
bgrozev
2e802c0f6d Merge pull request #698 from jitsi/external_api
Changes the implementation of the iframe API to use postis
2016-06-22 13:12:49 -05:00
hristoterezov
d29e39c1d2 Adds libs directory to .gitignore 2016-06-22 13:11:48 -05:00
hristoterezov
09fb5e5667 Merge pull request #703 from jitsi/fix-avatar-url-string
Fixes avatar URL setting string
2016-06-21 15:03:02 -05:00
yanas
70e5ce7aec Fixes avatar URL setting string 2016-06-21 15:01:43 -05:00
Любомир Маринов
1f942aa13d Merge pull request #697 from tsareg/fix_two_gum_error_dialogs
Fixing various edge-cases when two gUM error dialogs might be shown and other possible bugs
2016-06-21 12:49:10 -05:00
hristoterezov
b60095df28 Merge pull request #702 from jitsi/deb-update-deps
Removes unused dependency.
2016-06-21 10:52:20 -05:00
damencho
6715d41f92 Removes unused dependency.
Used to minimize strophe-plugins which were inside the source tree and now npm handles them.
2016-06-21 10:38:31 -05:00
tsareg
375b145030 Prevent possible memory leak 2016-06-21 17:39:00 +03:00
tsareg
9d3b2aee02 Show overlay with guidance for gUM permission prompts 2016-06-21 12:08:32 +03:00
Boris Grozev
2d2e27b8d0 Implements "raised hand". 2016-06-20 16:58:54 -05:00
Boris Grozev
4b6ac38058 Fixes a failure to show the dominant speaker indicator for the local participant. 2016-06-20 15:58:08 -05:00
hristoterezov
21c2469dd6 Removes unnecessary whitespaces from Makefile 2016-06-20 13:23:00 -05:00
hristoterezov
02f176c75a Changes the implementation of the iframe API to use postis 2016-06-17 15:35:40 -05:00
tsareg
8b528b582f Fixing various edge-cases when two gUM error dialogs might be shown and other possible bugs 2016-06-17 15:31:25 +03:00
Дамян Минков
72d38ad202 Merge pull request #696 from jitsi/add-pootle-langs
Add missing languages from Pootle
2016-06-15 12:53:59 -05:00
Ingo Bauersachs
7a5461e1cb Add missing languages from Pootle 2016-06-15 11:50:04 +02:00
Ingo Bauersachs
1714ede6d4 Rename Translation.md to readme.md 2016-06-15 11:45:03 +02:00
ibauersachs
f8ee97a71c Commit from translate.jitsi.org by user ibauersachs.: 240 of 240 strings translated (0 fuzzy). 2016-06-15 09:47:54 +00:00
tsareg
897a6bfbe6 Refactored conference.js code. Moved almost all code that relates to handling change of media devices to separate module. Fixed couple of bugs. 2016-06-14 20:40:15 -05:00
yanas
97237470af Visual improvements of keyboard shortcut popup 2016-06-14 20:21:32 -05:00
Boris Grozev
d79971a737 An initial version of a "keyboard shortcuts" help panel. 2016-06-14 20:16:38 -05:00
Дамян Минков
334f7bf95a Merge pull request #693 from jitsi/jwt_support
JWT client support
2016-06-14 14:38:36 -05:00
hristoterezov
661795fd51 Fixes accidentally changed value of strophejs-plugins property in package.json 2016-06-14 13:36:46 -05:00
hristoterezov
47fe71c1f1 Fixes issue with ToolbarToggle.setAlwaysVisibleToolbar 2016-06-14 11:34:56 -05:00
hristoterezov
c5eebcda98 Adds exception for preventing to send the JWT token 2016-06-13 16:43:15 -05:00
hristoterezov
8deb003ef6 JWT client support 2016-06-13 16:11:44 -05:00
George Politis
10b2746a3e Merge pull request #689 from bgrozev/makefile-improvements
Makefile improvements
2016-06-10 15:22:18 -05:00
Boris Grozev
62fd07e98e Copy the map files for the non-minified version to the deploy dir. 2016-06-10 19:44:27 +00:00
Boris Grozev
ee8a270a36 Don't run npm update, because it sometimes causes the lib-jitsi-meet npm link to be removed. 2016-06-10 19:43:29 +00:00
hristoterezov
870a4e705b Merge pull request #683 from jitsi/fixes-ff-warnings-2
Defines^2 the document encoding.
2016-06-09 10:41:43 -05:00
Любомир Маринов
9dcb717a51 Merge pull request #685 from tsareg/fix_type_error_when_enabling_permissions_for_devices
Fix TypeError when one of audioTracks or videoTracks was undefined
2016-06-09 09:37:02 -05:00
tsareg
f72e3bf552 Fix TypeError when one of audioTracks or videoTracks was undefined 2016-06-09 12:38:30 +03:00
George Politis
ef70ff7da0 Defines^2 the document encoding. 2016-06-08 23:51:45 -05:00
hristoterezov
61fa2d8ed1 Merge pull request #682 from jitsi/fixes-ff-warnings
Defines the document encoding.
2016-06-08 23:49:02 -05:00
George Politis
1bda4ca61c Defines the document encoding.
Make FF stop complaining about the character encoding of the HTML document
not being declared.
2016-06-08 18:35:28 -05:00
hristoterezov
ba00080462 Merge pull request #681 from jitsi/add-enable-disable-popup
Unifrms messageHandler access and adds enable disable
2016-06-08 15:05:03 -05:00
yanas
57815cb2fe Unifrms messageHandler access and adds enable disable 2016-06-08 14:48:45 -05:00
yanas
346ff889ea Merge pull request #679 from damencho/follow-me
Fixes follow-me to work without etherpad
2016-06-07 17:01:45 -05:00
damencho
165507b83a Removes printing audio levels by default in debug mode and makes it optional. 2016-06-07 16:40:43 -05:00
damencho
955e01a750 Adds comments for processing nextOnStage. 2016-06-07 16:39:08 -05:00
damencho
ca62f9bec2 Adds a check to make follow me work without etherpad enabled. 2016-06-07 15:13:28 -05:00
Emil Ivov
c82bf2a19c Merge pull request #678 from geekgonecrazy/master
Switch to https on iframe creation
2016-06-07 14:50:21 -05:00
Aaron Ogle
98919e0996 Changed variable from ssl to noSsl
Defaults to SSL, only if the noSsl flag is true will it use http
2016-06-07 14:08:02 -05:00
Aaron Ogle
81437263b4 Allow ssl variable to force https:// on the iframe 2016-06-06 23:06:37 -05:00
Aaron Ogle
f883199f4f Switch to https on iframe creation 2016-06-06 21:56:07 -05:00
damencho
207e6e1b7d Merge pull request #666 from champtar/source-package
Fix missing base.html in source-package
2016-06-06 17:19:45 -05:00
lyubomir
06911c4c75 Merge pull request #676 from jitsi/tsareg-handle_create_local_tracks_errors_better
Tsareg handle create local tracks errors better
2016-06-03 16:17:34 -05:00
Lyubomir Marinov
fa1ea94c5c Merge branch 'handle_create_local_tracks_errors_better' of https://github.com/tsareg/jitsi-meet into tsareg-handle_create_local_tracks_errors_better 2016-06-03 14:28:09 -05:00
hristoterezov
6b704f184b Merge pull request #675 from aaronkvanmeerten/master
Only push to history with present page URL plus room name
2016-06-03 14:13:49 -05:00
Aaron van Meerten
c2eede2bb5 Only push to history with present page URL plus room name
Use location.href instead of location.pathname to make the URL absolute
2016-06-03 13:00:09 -05:00
lyubomir
0fec9565e5 Merge pull request #668 from jitsi/jetty-ssi-impl
Adds property for initial jetty ssi configuration.
2016-06-03 09:56:43 -05:00
Emil Ivov
8114152369 Merge pull request #673 from jitsi/revert-history-pushState
Revert "Removes unnecessary history.pushState if the welcome page is …
2016-06-03 07:47:53 -05:00
yanas
968521ef7c Revert "Removes unnecessary history.pushState if the welcome page is disabled and the user enter the base URL"
This reverts commit 3d5af92c7a.
2016-06-03 07:45:57 -05:00
Paweł Domas
bdb4d019f8 Merge pull request #672 from tsareg/audio_output_change_warning
Log warning instead of error for audio output device change errors
2016-06-03 11:11:20 +02:00
tsareg
c1a93afeaf Log warning instead of error for audio output device change errors 2016-06-03 11:15:07 +03:00
hristoterezov
b8d8ef5cfd Merge pull request #670 from jitsi/handle-recording-errors
Handle recording errors
2016-06-02 18:18:42 -05:00
yanas
07c2e91ae2 Do not handle the actual error message yet 2016-06-02 17:12:40 -05:00
yanas
7e4b13fb44 Remove recorder errors import 2016-06-02 15:41:28 -05:00
yanas
69798848c0 Handle recording errors 2016-06-02 13:34:51 -05:00
Emil Ivov
9e52e65faa Merge pull request #669 from jitsi/remove_history_push
Removes unnecessary history.pushState if the welcome page is disabled and the user enter the base URL
2016-06-02 13:25:00 -05:00
hristoterezov
3d5af92c7a Removes unnecessary history.pushState if the welcome page is disabled and the user enter the base URL 2016-06-02 13:02:42 -05:00
damencho
ed9fd6c8fd Adds property for initial jetty ssi configuration. 2016-06-02 12:27:47 -05:00
Emil Ivov
6c1349c501 Merge pull request #667 from jitsi/history_fix
Fixes unhandled error from history.pushState
2016-06-01 17:53:41 -05:00
hristoterezov
6e34e33b0d Fixes unhandled error from history.pushState 2016-06-01 17:47:24 -05:00
Etienne CHAMPETIER
5d9d6b4642 Fix missing base.html in source-package
Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
2016-06-01 15:58:55 +02:00
Senya
8196233ed2 Update manual-install.md
There is no YOURSECRET4 mentions in the document
2016-05-29 15:04:33 +03:00
yanas
c29f9921a1 Merge pull request #662 from aaronkvanmeerten/master
make the chatArrow image reference relative
2016-05-27 11:03:20 -05:00
tsareg
f574dbe056 Changes after code review 2016-05-27 18:49:26 +03:00
Aaron van Meerten
e6385bb95d make the chatArrow image reference relative, allows for better base href support 2016-05-27 10:45:38 -05:00
tsareg
ccdba03888 Minor fixes for error dialogs 2016-05-27 14:01:43 +03:00
tsareg
e257a3dfc9 Merge branch 'master' into handle_create_local_tracks_errors_better
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2016-05-27 11:29:23 +03:00
tsareg
448fcf36b6 Show dialog for GUM errors 2016-05-26 11:53:02 +03:00
tsareg
48b219111d Use special JitsiTrackError object instead just strings for various types of errors that may happen to JitsiTrack 2016-05-25 15:04:48 +03:00
yanas
7f9c4d6480 Merge pull request #659 from aaronkvanmeerten/master
SSI inclusion of config.js
2016-05-24 12:48:07 -05:00
hristoterezov
064917886e Merge pull request #660 from jitsi/fix-user-cancel-reject-handling
Handle Promise.reject for user cancel case
2016-05-23 17:22:51 -05:00
yanas
0cf291d796 Handle Promise.reject for user cancel case 2016-05-23 16:46:41 -05:00
champtar
8418fc97f1 Commit from translate.jitsi.org by user champtar.: 203 of 203 strings translated (0 fuzzy). 2016-05-23 09:13:54 +00:00
Aaron van Meerten
6170f6c268 add support for possible ssi of <base> attribute
left blank in default meet installations, to be overridden by adding <base href="CDN_URL"> to /base.html
2016-05-20 16:51:37 -05:00
Aaron van Meerten
4dd82b3376 switch config.js values to be present directly in index.html, loaded server-side during page render instead of as a separate request 2016-05-20 16:45:40 -05:00
bgrozev
9ce5e232bb Merge pull request #658 from jitsi/nuke-preconfigured-bridge
Nukes the pre-configured bridge from the config file.
2016-05-19 14:56:37 -05:00
George Politis
318ab2c9dc Nukes the pre-configured bridge from the config file. 2016-05-19 14:51:45 -05:00
yanas
29f06bbb77 Merge pull request #657 from tsareg/switch_tracks_on_device_list_change
Switch local audio and video track when list of available devices changes
2016-05-18 15:18:31 -05:00
Kostiantyn Tsaregradskyi
c1807c3649 Handle cases when new media devices are added/removed more precisely and more predictable 2016-05-18 14:23:12 +03:00
Kostiantyn Tsaregradskyi
b270256a7a Switch local audio and video track when list of available devices changes 2016-05-17 18:58:25 +03:00
damencho
27586643c3 Merge pull request #654 from jitsi/gsm_bars
Changes the way of calculating connection quality.
2016-05-17 10:53:38 +03:00
hristoterezov
99e6453e09 Changes the way of calculating connection quality. 2016-05-12 17:48:19 -05:00
yanas
eda11f4657 Merge pull request #653 from tsareg/device_list_change_basic_support
Update devices in settings panel when list of available devices changes
2016-05-12 15:02:19 -05:00
Kostiantyn Tsaregradskyi
474155ce9d Added ability to notify about available media device list changes 2016-05-11 16:59:27 +03:00
hristoterezov
49e60a8b4f Merge pull request #645 from tsareg/master
Added ability to change output audio device through settings
2016-05-10 13:28:40 -05:00
Kostiantyn Tsaregradskyi
5e027e0a91 Added ability to switch audio output device - changes after review 2016-05-10 13:11:41 +03:00
hristoterezov
e2a7a66772 Merge pull request #624 from jitsi/updates-callstats-error-reporting
Updates callstats error reporting
2016-05-09 13:23:01 -05:00
yanas
76017bcbe3 Merge pull request #649 from jitsi/flip_flag
Adds config option for enabling the flip menu for the local video
2016-05-09 13:21:33 -05:00
hristoterezov
1eb915d312 Adds config option for enabling the flip menu for the local video 2016-05-09 12:39:42 -05:00
bgrozev
3df47f0d72 Merge pull request #647 from jitsi/updates-deployment-non-min
Updates deployment with non-minified versions of libs.
2016-05-09 08:34:33 -05:00
champtar
cc5d563599 Commit from translate.jitsi.org by user champtar.: 203 of 203 strings translated (0 fuzzy). 2016-05-09 13:26:57 +00:00
damencho
c5e7ca8a26 Adds non-minified versions of app.bundle and lib-jitsi-meet to the libs folder which is included in the deb package. 2016-05-09 11:49:04 +03:00
yanas
626b37b4fe Merge pull request #646 from jitsi/flip
Implements custom context menu to flip the local video
2016-05-08 10:50:35 -05:00
hristoterezov
c3338d3bf2 Implements custom context menu to flip the local video 2016-05-06 20:50:37 -05:00
Kostiantyn Tsaregradskyi
d34adb67dd Added ability to switch audio output device 2016-05-06 17:31:23 +03:00
George Politis
ae543e68d6 Merge pull request #642 from jitsi/fix_ff_hangup
Fixes issue with not working hangup button on FF
2016-05-05 17:03:46 -05:00
Paweł Domas
50f261effc Merge pull request #643 from jitsi/fix-recorder-error-states
Fix recorder error and state handling
2016-05-05 14:50:51 -05:00
yanas
0736206722 Fix recorder error and state handling 2016-05-05 11:46:06 -05:00
hristoterezov
9dc9dc3685 Fixes issue with not working hangup button on FF 2016-05-05 11:11:05 -05:00
Kostiantyn Tsaregradskyi
2bd600aeaf Very raw version of ability to switch audio output device 2016-05-05 17:34:15 +03:00
jitsi-pootle
2c0d60a1f4 New files added from translate.jitsi.org based on templates 2016-05-05 10:45:10 +00:00
ibauersachs
25a62f330f Commit from translate.jitsi.org by user ibauersachs.: 203 of 203 strings translated (0 fuzzy). 2016-05-04 08:40:00 +00:00
Paweł Domas
b191c58462 Merge pull request #640 from jitsi/fix-recorder-states
Fix recorder state and moderator restart
2016-05-03 15:42:50 -05:00
yanas
c07060c9cd Fix recorder state and moderator restart 2016-05-03 15:26:35 -05:00
yanas
0957ee7547 Merge pull request #639 from jitsi/external_connect_and_auth
Fixes issues when external connect and authentication are enabled
2016-05-02 15:00:06 -05:00
hristoterezov
d6ef36b4b4 Passes the room name to connect when using authentication 2016-05-02 14:47:40 -05:00
hristoterezov
6b5f6ec704 Fixes issue with multiple room query parameters added to bosh url 2016-05-02 14:22:02 -05:00
hristoterezov
0970fdd7e7 Clears external connect data after using it 2016-05-02 14:09:57 -05:00
George Politis
1ff3efa7d2 Merge pull request #638 from jitsi/hide-recorder-thumbnail
Hide recorder local thumbnail
2016-05-01 13:59:41 -05:00
yanas
ab67b42eb9 Hide recorder local thumbnail 2016-05-01 13:47:43 -05:00
hristoterezov
cdefca9fbd Merge pull request #633 from jitsi/fix-and-refactor-shared-video
Fix and refactor shared video
2016-04-29 15:39:30 -05:00
hristoterezov
9b334777b3 Merge pull request #634 from jitsi/fix-remote-video-check
Make sure remote video exist before we use it
2016-04-29 12:55:01 -05:00
George Politis
4f2a57c3a5 Merge pull request #636 from jitsi/fix_externalConnectUrl_param
Fixes issue with externalConnectUrl hash param when the value is null
2016-04-29 11:47:44 -05:00
hristoterezov
d535765648 Fixes issue with externalConnectUrl hash param when the value is null 2016-04-29 11:46:24 -05:00
yanas
edf2f8114b Make sure remote video exist before we use it 2016-04-28 21:18:48 -05:00
yanas
d95b2b034b Fix initial state of user interaction mute 2016-04-28 17:47:40 -05:00
yanas
c2f46a5cfe Refactor shared video manager 2016-04-28 17:44:12 -05:00
hristoterezov
bd7740cba1 Merge pull request #632 from jitsi/add-url-param-conn-opt
Add support for connection optimisation URL param
2016-04-28 15:17:01 -05:00
yanas
4a4e25de28 Add support for connection optimisation URL param 2016-04-28 14:56:11 -05:00
damencho
65c49b6b4c Merge pull request #622 from jitsi/add-smart-mutes-unmutes-shared-video
Add shared video smart mike mutes unmutes
2016-04-28 19:59:00 +03:00
bgrozev
202c506a8d Merge pull request #630 from jitsi/fix-missing-remote-video
Fix missing remote video exception
2016-04-27 16:51:10 -05:00
yanas
aeabad4891 Fix missing remote video exception 2016-04-27 16:28:00 -05:00
bgrozev
5cb2b15b54 Merge pull request #629 from jitsi/lipsync
Lipsync
2016-04-27 15:16:15 -05:00
damencho
81a487b856 Merge pull request #628 from jitsi/add-hidden-participant-support
Add hidden participant support
2016-04-27 18:49:37 +03:00
yanas
c881e7b640 Add hidden participant support 2016-04-27 10:16:30 -05:00
paweldomas
f2c9b8b7a5 Fix issue updating large video 'src' while on stage 2016-04-26 15:42:18 -05:00
paweldomas
0116f547ed Log an error when not an audio nor a video track is added 2016-04-26 15:40:57 -05:00
ibauersachs
13a55089a5 Commit from translate.jitsi.org by user ibauersachs.: 203 of 203 strings translated (0 fuzzy). 2016-04-26 17:13:55 +00:00
George Politis
7bb20bb967 Merge pull request #617 from bgrozev/refactor-util
Exposes the number of participants with tracks.
2016-04-26 10:23:34 -05:00
damencho
08b60bf750 Merge pull request #625 from champtar/source-package
Fix "make source-package"
2016-04-26 17:14:09 +03:00
Etienne CHAMPETIER
ca31bb935b Fix "make source-package"
Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
2016-04-26 13:51:09 +02:00
damencho
1f98fbb99f Adds unhandledrejection, that catches all unhandled promise rejection and logs them in callstats. 2016-04-26 11:00:42 +03:00
damencho
2442f0dfd3 Removes playerPaused variable and just use player to get its state. 2016-04-26 10:22:12 +03:00
yanas
3a9d743d47 Add shared video smart mike mutes unmutes 2016-04-25 15:39:31 -05:00
emcho
6a74296d3e Commit from translate.jitsi.org by user emcho.: 180 of 180 strings translated (0 fuzzy). 2016-04-25 19:29:18 +00:00
jitsi-pootle
af46e28fcc New files added from translate.jitsi.org based on templates 2016-04-25 17:14:01 +00:00
Bernhard Lichtinger
c9ebecbf10 Add Firefox in list of supportedBrowsers for invite emails 2016-04-22 12:32:46 +02:00
Boris Grozev
fb7c2082e6 Exposes the number of participants with tracks. 2016-04-21 17:48:30 -05:00
emcho
1feb5d00fe Commit from translate.jitsi.org by user emcho.: 180 of 180 strings translated (0 fuzzy). 2016-04-20 23:06:12 +00:00
jitsi-pootle
faa519cbeb New files added from translate.jitsi.org based on templates 2016-04-20 22:35:07 +00:00
Emil Ivov
40c7a7e1b8 Merge pull request #615 from jitsi/prosody_jwt_errors
Improve token error reporting in Prosody JWT plugin
2016-04-20 17:16:19 -05:00
paweldomas
5a95edbdcd Improve token error reporting in Prosody JWT plugin 2016-04-20 16:38:16 -05:00
hristoterezov
846ec1c9c8 Merge pull request #614 from jitsi/add-initial-id-pass-login
Adds id and password initial login
2016-04-20 15:06:23 -05:00
yanas
1c9903642b Do not remove the login params after read 2016-04-20 14:41:29 -05:00
yanas
6bfb28f63f Merge pull request #610 from jitsi/callstats_fix
Leaves the call when the hangup button is pressed
2016-04-20 14:06:16 -05:00
yanas
3408737693 Adds id and password initial login 2016-04-20 14:02:16 -05:00
damencho
bbc91f6e0c Merge pull request #613 from jitsi/fix-display-name-dialog
Fix require display name dialog
2016-04-19 16:26:22 -05:00
yanas
0bf4660309 Fix require display name dialog 2016-04-19 16:06:16 -05:00
damencho
58d5823d12 Merge pull request #612 from jitsi/add-smart-shared-video-unmute
Adds smart un-mute to the shared video
2016-04-19 13:27:08 -05:00
yanas
326dedaf40 Fix string 2016-04-19 13:24:27 -05:00
yanas
d08e37b42b Adds smart un-mute to the shared video logic 2016-04-19 13:07:04 -05:00
hristoterezov
7c7ce66ae4 Prettifying the code related to showing the feedback dialog 2016-04-19 12:15:04 -05:00
hristoterezov
73b4ad5a63 Added JitsiConference.leave() when the hangup button is pressed 2016-04-18 17:02:34 -05:00
hristoterezov
2b7ae5c167 Merge pull request #609 from jitsi/fix-feedback-enabling
Fix enable feedback button check
2016-04-15 16:11:04 -05:00
yanas
7ba8b0a24e Fix enable feedback button check 2016-04-15 15:41:51 -05:00
damencho
47a64190a6 Merge pull request #602 from jitsi/performanceTime_format
Renames performanceTimes to ConnectionTimes
2016-04-11 13:41:40 -05:00
hristoterezov
b00fb2ec7e Merge pull request #599 from damencho/updates-onDisplayNameChanged
Updates onDisplayNameChanged
2016-04-11 13:12:42 -05:00
damencho
13e3e99994 Updates websockets example. 2016-04-11 10:16:08 -05:00
hristoterezov
655b7019d1 Renames performanceTimes to ConnectionTimes 2016-04-11 10:01:23 -05:00
damencho
702eb8cbbe Merge pull request #600 from jitsi/performanceTime_format
Fixes time console.log text
2016-04-10 12:55:58 -05:00
hristoterezov
ddf39a20b8 Fixes time console.log text 2016-04-10 12:25:37 -05:00
damencho
0e4f4cbd74 Initializes display name with initial value and does not depend on initial on display name changed event. 2016-04-09 22:08:06 -05:00
bgrozev
26443b6d72 Merge pull request #598 from damencho/minimize-document-modifications
Minimize document modifications on every presence
2016-04-09 21:57:16 -05:00
damencho
0974e31da1 Updates connection quality popover only if its visible or about to be visible. 2016-04-09 12:35:54 -05:00
damencho
613569ff09 Checks whether we need to modify document, before change - on display name change. 2016-04-09 12:04:01 -05:00
hristoterezov
4d63ea2021 Merge pull request #597 from jitsi/fix-isvisible-early-call
Fix early call of SidePanel isVisible
2016-04-08 14:49:15 -05:00
yanas
b597f44605 Fix early call of SidePanel isVisible 2016-04-08 14:46:13 -05:00
lyubomir
28bac7b329 Merge pull request #596 from jitsi/fix-black-stripe
Fix the black stripe (another try)
2016-04-08 11:13:12 -05:00
yanas
d9c3eec9a8 Fix the black stripe (another try) 2016-04-08 10:55:19 -05:00
hristoterezov
a8aa62b075 Merge pull request #593 from jitsi/custom-role-recorder-view
Add custom-role to presence and special view for Recorders
2016-04-07 14:58:54 -05:00
yanas
9ef43d1fe7 Remove self and use this instead in conference.js 2016-04-07 14:11:59 -05:00
yanas
562eba8d78 Removed unused variable 2016-04-07 13:58:15 -05:00
yanas
351775a1c0 Add jsdocs to the recording view manager 2016-04-07 13:09:19 -05:00
yanas
99d9b16c13 Add Recorder controller. 2016-04-07 13:06:28 -05:00
yanas
e43c5ab54c Add custom-role to presence and special view for Recorders 2016-04-07 12:08:00 -05:00
774 changed files with 69496 additions and 12668 deletions

6
.buckconfig Normal file
View File

@@ -0,0 +1,6 @@
[android]
target = Google Inc.:Google APIs:23
[maven_repositories]
central = https://repo1.maven.org/maven2

View File

@@ -8,3 +8,6 @@ indent_size = 4
indent_style = space
max_line_length = 80
trim_trailing_whitespace = true
[Makefile]
indent_style = tab

12
.eslintignore Normal file
View File

@@ -0,0 +1,12 @@
# The build artifacts of the jitsi-meet project.
build/*
# Third-party source code which we (1) do not want to modify or (2) try to
# modify as little as possible.
flow-typed/*
libs/*
# ESLint will by default ignore its own configuration file. However, there does
# not seem to be a reason why we will want to risk being inconsistent with our
# remaining JavaScript source code.
!.eslintrc.js

44
.eslintrc.js Normal file
View File

@@ -0,0 +1,44 @@
module.exports = {
'env': {
'browser': true,
'commonjs': true,
'es6': true
},
'extends': [
'eslint:recommended',
'plugin:flowtype/recommended'
],
'globals': {
// The globals that (1) are accessed but not defined within many of our
// files, (2) are certainly defined, and (3) we would like to use
// without explicitly specifying them (using a comment) inside of our
// files.
'__filename': false
},
'parser': 'babel-eslint',
'parserOptions': {
'ecmaFeatures': {
'experimentalObjectRestSpread': true
},
'sourceType': 'module'
},
'plugins': [
'flowtype'
],
'rules': {
'new-cap': [
'error',
{
'capIsNew': false // Behave like JSHint's newcap.
}
],
// While it is considered a best practice to avoid using methods on
// console in JavaScript that is designed to be executed in the browser
// and ESLint includes the rule among its set of recommended rules, (1)
// the general practice is to strip such calls before pushing to
// production and (2) we prefer to utilize console in lib-jitsi-meet
// (and jitsi-meet).
'no-console': 'off',
'semi': 'error'
}
};

74
.flowconfig Normal file
View File

@@ -0,0 +1,74 @@
[ignore]
; We fork some components by platform
.*/*[.]android.js
; Ignore "BUCK" generated dirs
<PROJECT_ROOT>/\.buckd/
; Ignore unexpected extra "@providesModule"
.*/node_modules/.*/node_modules/fbjs/.*
; Ignore duplicate module providers
; For RN Apps installed via npm, "Libraries" folder is inside
; "node_modules/react-native" but in the source repo it is in the root
.*/Libraries/react-native/React.js
.*/Libraries/react-native/ReactNative.js
; Ignore packages in node_modules which we (i.e. the jitsi-meet project) have
; seen to cause errors and we have chosen not to fix.
.*/node_modules/babel-.*
.*/node_modules/bower/.*
.*/node_modules/jsonlint/.*
.*/node_modules/promise/index.js.flow
.*/node_modules/styled-components/.*
.*/\.git/.*
[include]
[libs]
node_modules/react-native/Libraries/react-native/react-native-interface.js
node_modules/react-native/flow
flow/
[options]
emoji=true
module.system=haste
experimental.strict_type_args=true
; FIXME: munge_underscores should be false but right now there are some errors
; if we change the value to false
; Treats class properties with underscore as private. Disabled because currently
; for us "_" can mean protected too.
; munge_underscores=false
munge_underscores=true
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub'
suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FixMe
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-8]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-8]\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
suppress_comment=\\(.\\|\n\\)*\\$FlowDisableNextLine
unsafe.enable_getters_and_setters=true
; We (i.e. the jitsi-meet project) are using the haste module system on Web as
; well, not only on React Native. Unfortunately, Flow does not support .web.js
; by default. Override Flow's defaults to include .web.js as well. Technically,
; we have .native.js as well so the choice of .web.js may lead to errors.
; Practically though, it is a potential future problem that we do not have at
; the time of this writing.
module.file_ext=.web.js
; Flow's defaults:
module.file_ext=.js
module.file_ext=.jsx
module.file_ext=.json
[version]
^0.38.0

1
.gitattributes vendored
View File

@@ -1,2 +1,3 @@
*.bundle.js -text -diff
*.pbxproj -text
lib-jitsi-meet.js -text -diff

72
.gitignore vendored
View File

@@ -1,11 +1,71 @@
node_modules
*.swp
.idea/
*.iml
.*.tmp
deploy-local.sh
libs/app.bundle.*
libs/lib-jitsi-meet*
libs/external_connect.js
libs/
all.css
*css.map
.remote-sync.json
.sync-config.cson
# The following are automatically generated by the react-native command line
# utility (either with the init or upgrade option which pull in the latest
# template files recommended by Facebook for React Native).
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
#
buck-out/
\.buckd/
*.keystore
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use
# fastlane to re-generate the screenshots whenever they are needed. For more
# information about the recommended setup visit:
# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
#
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
# CocoaPods
Pods/
Podfile.lock

View File

@@ -1,4 +1,22 @@
node_modules
libs
debian
# The following do not need to be checked because they do not represent JS
# source code.
build/
debian/
libs/
node_modules/
# The following are checked by ESLint with the maximum configuration which
# supersedes JSHint.
flow-typed/
modules/API/
modules/remotecontrol/
modules/transport/
react/
# The following are checked by ESLint with the minimum configuration which does
# not supersede JSHint but take advantage of advanced language features such as
# Facebook Flow which are not supported by JSHint.
app.js
modules/translation/translation.js
analytics.js

1
.watchmanconfig Normal file
View File

@@ -0,0 +1 @@
{}

29
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,29 @@
# How to contribute
We would love to have your help. Before you start working however, please read
and follow this short guide.
# Reporting Issues
Provide as much information as possible. Mention the version of Jitsi Meet,
Jicofo and JVB you are using, and explain (as detailed as you can) how the
problem can be reproduced.
# Code contributions
Found a bug and know how to fix it? Great! Please read on.
## Contributor License Agreement
While the Jitsi projects are released under the
[Apache License 2.0](https://github.com/jitsi/jitsi-meet/blob/master/LICENSE), the copyright
holder and principal creator is [Atlassian](https://www.atlassian.com/). To
ensure that we can continue making these projects available under an Open Source license,
we need you to sign our Apache-based contributor
license agreement as either a [corporation](https://jitsi.org/ccla) or an
[individual](https://jitsi.org/icla). If you cannot accept the terms laid out
in the agreement, unfortunately, we cannot accept your contribution.
## Creating Pull Requests
- Make sure your code passes the linter rules beforehand. The linter is exeuted
automatically when committing code.
- Perform **one** logical change per pull request.
- Maintain a clean list of commits, squash them if necessary.
- Rebase your topic branch on top of the master branch before creating the pull
request.

11
ConferenceEvents.js Normal file
View File

@@ -0,0 +1,11 @@
/**
* Notifies interested parties that hangup procedure will start.
*/
export const BEFORE_HANGUP = "conference.before_hangup";
/**
* Notifies interested parties that desktop sharing enable/disable state is
* changed.
*/
export const DESKTOP_SHARING_ENABLED_CHANGED
= "conference.desktop_sharing_enabled_changed";

View File

@@ -1,24 +1,22 @@
NPM = npm
BROWSERIFY = ./node_modules/.bin/browserify
UGLIFYJS = ./node_modules/.bin/uglifyjs
EXORCIST = ./node_modules/.bin/exorcist
BUILD_DIR = build
CLEANCSS = ./node_modules/.bin/cleancss
CSS_FILES = font.css toastr.css main.css videolayout_default.css font-awesome.css jquery-impromptu.css modaldialog.css notice.css popup_menu.css login_menu.css popover.css jitsi_popover.css contact_list.css chat.css welcome_page.css settingsmenu.css feedback.css
DEPLOY_DIR = libs
BROWSERIFY_FLAGS = -d
OUTPUT_DIR = .
LIBJITSIMEET_DIR = node_modules/lib-jitsi-meet/
NODE_SASS = ./node_modules/.bin/node-sass
NPM = npm
OUTPUT_DIR = .
STYLES_BUNDLE = css/all.bundle.css
STYLES_DESTINATION = css/all.css
STYLES_MAIN = css/main.scss
WEBPACK = ./node_modules/.bin/webpack
all: update-deps compile uglify deploy clean
update-deps:
$(NPM) update
all: compile deploy clean
compile:
$(BROWSERIFY) $(BROWSERIFY_FLAGS) -e app.js -s APP | $(EXORCIST) $(OUTPUT_DIR)/app.bundle.js.map > $(OUTPUT_DIR)/app.bundle.js
$(WEBPACK) -p
clean:
rm -f $(OUTPUT_DIR)/app.bundle.*
rm -fr $(BUILD_DIR)
deploy: deploy-init deploy-appbundle deploy-lib-jitsi-meet deploy-css deploy-local
@@ -26,28 +24,36 @@ deploy-init:
mkdir -p $(DEPLOY_DIR)
deploy-appbundle:
cp $(OUTPUT_DIR)/app.bundle.min.js $(OUTPUT_DIR)/app.bundle.min.map \
$(DEPLOY_DIR)
cp \
$(BUILD_DIR)/app.bundle.min.js \
$(BUILD_DIR)/app.bundle.min.map \
$(BUILD_DIR)/do_external_connect.min.js \
$(BUILD_DIR)/do_external_connect.min.map \
$(BUILD_DIR)/external_api.min.js \
$(BUILD_DIR)/external_api.min.map \
$(BUILD_DIR)/device_selection_popup_bundle.min.js \
$(BUILD_DIR)/device_selection_popup_bundle.min.map \
$(OUTPUT_DIR)/analytics.js \
$(DEPLOY_DIR)
deploy-lib-jitsi-meet:
cp $(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.js \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.map \
$(LIBJITSIMEET_DIR)/connection_optimization/external_connect.js \
$(DEPLOY_DIR)
cp \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.js \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.map \
$(LIBJITSIMEET_DIR)/connection_optimization/external_connect.js \
$(DEPLOY_DIR)
deploy-css:
(cd css; cat $(CSS_FILES)) | $(CLEANCSS) > css/all.css
$(NODE_SASS) $(STYLES_MAIN) $(STYLES_BUNDLE) && \
$(CLEANCSS) $(STYLES_BUNDLE) > $(STYLES_DESTINATION) ; \
rm $(STYLES_BUNDLE)
deploy-local:
([ ! -x deploy-local.sh ] || ./deploy-local.sh)
uglify:
$(UGLIFYJS) -p relative $(OUTPUT_DIR)/app.bundle.js -o $(OUTPUT_DIR)/app.bundle.min.js --source-map $(OUTPUT_DIR)/app.bundle.min.map --in-source-map $(OUTPUT_DIR)/app.bundle.js.map
source-package:
mkdir -p source_package/jitsi-meet/css && \
cp -r analytics.js external_api.js favicon.ico fonts images index.html interface_config.js libs plugin.*html sounds title.html unsupported_browser.html LICENSE config.js lang source_package/jitsi-meet && \
cp -r *.js *.html connection_optimization favicon.ico fonts images libs static sounds LICENSE lang source_package/jitsi-meet && \
cp css/all.css source_package/jitsi-meet/css && \
cp css/unsupported_browser.css source_package/jitsi-meet/css && \
(cd source_package ; tar cjf ../jitsi-meet.tar.bz2 jitsi-meet) && \
rm -rf source_package

View File

@@ -1,5 +1,5 @@
Jitsi Meet - Secure, Simple and Scalable Video Conferences
====
# Jitsi Meet - Secure, Simple and Scalable Video Conferences
Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses [Jitsi Videobridge](https://jitsi.org/videobridge) to provide high quality, scalable video conferences. You can see [Jitsi Meet in action](http://youtu.be/7vFUVClsNh0) here at the session #482 of the VoIP Users Conference.
You can also try it out yourself at https://meet.jit.si .
@@ -12,9 +12,23 @@ Installing Jitsi Meet is quite a simple experience. For Debian-based systems, we
For other systems, or if you wish to install all components manually, see the [detailed manual installation instructions](https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md).
## Download
You can download Debian/Ubuntu binaries:
* [stable](https://download.jitsi.org/stable/) ([instructions](https://jitsi.org/downloads/ubuntu-debian-installations-instructions/))
* [testing](https://download.jitsi.org/testing/) ([instructions](https://jitsi.org/downloads/ubuntu-debian-installations-instructions-for-testing/))
* [nightly](https://download.jitsi.org/unstable/) ([instructions](https://jitsi.org/downloads/ubuntu-debian-installations-instructions-nightly/))
You can download source archives (produced by ```make source-package```):
* [source builds](https://download.jitsi.org/jitsi-meet/src/)
You can get our mobile versions from here:
* [Android](https://play.google.com/store/apps/details?id=org.jitsi.meet)
* [iOS](https://itunes.apple.com/us/app/jitsi-meet/id1165103905)
## Building the sources
Jitsi Meet uses [Browserify](http://browserify.org). If you want to make changes in the code you need to [install Browserify](http://browserify.org/#install). Browserify requires [nodejs](http://nodejs.org).
Node.js >= 6 is required.
On Debian/Ubuntu systems, the required packages can be installed with:
```
@@ -28,7 +42,7 @@ To build the Jitsi Meet application, just type
make
```
## Working with the library sources(lib-jitsi-meet).
## Working with the library sources (lib-jitsi-meet)
By default the library is build from its git repository sources. The default dependency path in package.json is :
```json
@@ -66,6 +80,7 @@ npm link lib-jitsi-meet
```
So now after changes in local `lib-jitsi-meet` repository you can rebuild it with `npm run install` and your `jitsi-meet` repository will use that modified library.
Note: when using node version 4.x, the make file of jitsi-meet do npm update which will delete the link, no longer the case with version 6.x.
If you do not want to use local repository anymore you should run
```bash
@@ -74,8 +89,18 @@ npm unlink lib-jitsi-meet
npm install
```
## Discuss
Please use the [Jitsi dev mailing list](http://lists.jitsi.org/pipermail/dev/) to discuss feature requests before opening an issue on Github.
## Contributing
If you are looking to contribute to Jitsi Meet, first of all, thank you! Please
see our [guidelines for contributing](CONTRIBUTING.md).
## Embedding in external applications
Jitsi Meet provides a very flexible way of embedding it in external applications by using the [Jitsi Meet API](doc/api.md).
## Mobile app
Jitsi Meet is also available as a React Native application for Android and iOS.
Instructions on how to build it can be found [here](doc/mobile.md).
## Acknowledgements

View File

@@ -1,5 +1,9 @@
/* global ga */
(function (ctx) {
function Analytics() {
/* eslint-disable */
/**
* Google Analytics
*/
@@ -8,11 +12,22 @@
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-319188-14', 'jit.si');
ga('send', 'pageview');
/* eslint-enable */
}
Analytics.prototype.sendEvent = function (action, data) {
ga('send', 'event', 'jit.si', action);
// empty label if missing value for it and add the value,
// the value should be integer or null
var value = data.value;
value = value? Math.round(parseFloat(value)) : null;
var label = data.label || "";
ga('send', 'event', 'jit.si',
action + '.' + data.browserName, label, value);
};
ctx.Analytics = Analytics;
}(window));
if(typeof ctx.analyticsHandlers === "undefined")
ctx.analyticsHandlers = [];
ctx.analyticsHandlers.push(Analytics);
}(window));

243
android/README.md Normal file
View File

@@ -0,0 +1,243 @@
# Jitsi Meet SDK for Android
This directory contains the source code of the Jitsi Meet app and the Jitsi Meet
SDK for Android.
## Jitsi Meet SDK
Jitsi Meet SDK is an Android library which embodies the whole Jitsi Meet
experience and makes it reusable by third-party apps.
To get started, extends your `android.app.Activity` from
`org.jitsi.meet.sdk.JitsiMeetActivity`:
```java
package org.jitsi.example;
import org.jitsi.meet.sdk.JitsiMeetActivity;
public class MainActivity extends JitsiMeetActivity {
}
```
Alternatively, you can use the `org.jitsi.meet.sdk.JitsiMeetView` class which
extends `android.view.View`:
```java
package org.jitsi.example;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import org.jitsi.meet.sdk.JitsiMeetView;
public class MainActivity extends AppCompatActivity {
private JitsiMeetView view;
@Override
public void onBackPressed() {
if (!JitsiMeetView.onBackPressed()) {
// Invoke the default handler if it wasn't handled by React.
super.onBackPressed();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view = new JitsiMeetView(this);
view.loadURL(null);
setContentView(view);
}
@Override
protected void onDestroy() {
super.onDestroy();
view.dispose();
view = null;
JitsiMeetView.onHostDestroy(this);
}
@Override
public void onNewIntent(Intent intent) {
JitsiMeetView.onNewIntent(intent);
}
@Override
protected void onPause() {
super.onPause();
JitsiMeetView.onHostPause(this);
}
@Override
protected void onResume() {
super.onResume();
JitsiMeetView.onHostResume(this);
}
}
```
### JitsiMeetActivity
This class encapsulates a high level API in the form of an Android `Activity`
which displays a single `JitsiMeetView`.
#### getWelcomePageEnabled()
See JitsiMeetView.getWelcomePageEnabled.
#### loadURL(URL)
See JitsiMeetView.loadURL.
#### setWelcomePageEnabled(boolean)
See JitsiMeetView.setWelcomePageEnabled.
### JitsiMeetView
The `JitsiMeetView` class is the core of Jitsi Meet SDK. It's designed to
display a Jitsi Meet conference (or a welcome page).
#### dispose()
Releases all resources associated with this view. This method MUST be called
when the Activity holding this view is going to be destroyed, usually in the
`onDestroy()` method.
#### getListener()
Returns the `JitsiMeetViewListener` instance attached to the view.
#### getWelcomePageEnabled()
Returns true if the Welcome page is enabled; otherwise, false. If false, a black
empty view will be rendered when not in a conference. Defaults to false.
#### loadURL(URL)
Loads a specific URL which may identify a conference to join. If the specified
URL is null and the Welcome page is enabled, the Welcome page is displayed
instead.
#### loadURLString(String)
Loads a specific URL which may identify a conference to join. If the specified
URL is null and the Welcome page is enabled, the Welcome page is displayed
instead.
#### loadURLObject(Bundle)
Loads a specific URL which may identify a conference to join. The URL is
specified in the form of a Bundle of properties which (1) internally are
sufficient to construct a URL (string) while (2) abstracting the specifics of
constructing the URL away from API clients/consumers. If the specified URL is
null and the Welcome page is enabled, the Welcome page is displayed instead.
Example:
```java
Bundle configOverwrite = new Bundle();
configOverwrite.putBoolean("startWithAudioMuted", true);
configOverwrite.putBoolean("startWithVideoMuted", false);
Bundle urlBundle = new Bundle();
urlBundle.putBundle("configOverwrite", configOverwrite);
urlBundle.putString("url", "https://meet.jit.si/Test123");
view.loadURLObject(urlBundle);
```
#### setListener(listener)
Sets the given listener (class implementing the `JitsiMeetViewListener`
interface) on the view.
#### setWelcomePageEnabled(boolean)
Sets whether the Welcome page is enabled. See `getWelcomePageEnabled` for more
information.
NOTE: Must be called before `loadURL`/`loadURLString` for it to take effect.
#### onBackPressed()
Helper method which should be called from the activity's `onBackPressed` method.
If this function returns `true`, it means the action was handled and thus no
extra processing is required; otherwise the app should call the parent's
`onBackPressed` method.
This is a static method.
#### onHostDestroy(activity)
Helper method which should be called from the activity's `onDestroy` method.
This is a static method.
#### onHostPause(activity)
Helper method which should be called from the activity's `onPause` method.
This is a static method.
#### onHostResume(activity)
Helper method which should be called from the activity's `onResume` method.
This is a static method.
#### onNewIntent(intent)
Helper method for integrating the *deep linking* functionality. If your app's
activity is launched in "singleTask" mode this method should be called from the
activity's `onNewIntent` method.
This is a static method.
#### JitsiMeetViewListener
`JitsiMeetViewListener` provides an interface apps can implement to listen to
the state of the Jitsi Meet conference displayed in a `JitsiMeetView`.
### JitsiMeetViewAdapter
A default implementation of the `JitsiMeetViewListener` interface. Apps may
extend the class instead of implementing the interface in order to minimize
boilerplate.
##### onConferenceFailed
Called when a joining a conference was unsuccessful or when there was an error
while in a conference.
The `data` HashMap contains an "error" key describing the error and a "url"
key with the conference URL.
#### onConferenceJoined
Called when a conference was joined.
The `data` HashMap contains a "url" key with the conference URL.
#### onConferenceLeft
Called when a conference was left.
The `data` HashMap contains a "url" key with the conference URL.
#### onConferenceWillJoin
Called before a conference is joined.
The `data` HashMap contains a "url" key with the conference URL.
#### onConferenceWillLeave
Called before a conference is left.
The `data` HashMap contains a "url" key with the conference URL.

41
android/app/build.gradle Normal file
View File

@@ -0,0 +1,41 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId 'org.jitsi.meet'
versionCode Integer.parseInt("${version}")
versionName "1.4.${version}"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
ndk {
abiFilters 'armeabi-v7a', 'x86'
}
packagingOptions {
// The project react-native does not provide 64-bit binaries at the
// time of this writing. Unfortunately, packaging any 64-bit
// binaries into the .apk will crash the app at runtime on 64-bit
// platforms.
exclude '/lib/mips64/**'
exclude '/lib/arm64-v8a/**'
exclude '/lib/x86_64/**'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':sdk')
}

66
android/app/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,66 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Disabling obfuscation is useful if you collect stack traces from production crashes
# (unless you are using a system that supports de-obfuscate the stack traces).
-dontobfuscate
# React Native
# Keep our interfaces so they can be used by other ProGuard rules.
# See http://sourceforge.net/p/proguard/bugs/466/
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.proguard.annotations.DoNotStrip class *
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
@com.facebook.proguard.annotations.DoNotStrip *;
@com.facebook.common.internal.DoNotStrip *;
}
-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
void set*(***);
*** get*();
}
-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; }
-keep class * extends com.facebook.react.bridge.NativeModule { *; }
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
-keepclassmembers class * { @com.facebook.react.uimanager.UIProp <fields>; }
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }
-dontwarn com.facebook.react.**
# okhttp
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
# okio
-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**

View File

@@ -0,0 +1,36 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.jitsi.meet">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTask"
android:name=".MainActivity"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:host="beta.hipchat.me" android:scheme="https" />
<data android:host="beta.meet.jit.si" android:scheme="https" />
<data android:host="chaos.hipchat.me" android:scheme="https" />
<data android:host="enso.me" android:scheme="https" />
<data android:host="hipchat.me" android:scheme="https" />
<data android:host="meet.jit.si" android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="org.jitsi.meet" />
</intent-filter>
</activity>
</application>
</manifest>

View File

@@ -0,0 +1,49 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet;
import android.os.Bundle;
import org.jitsi.meet.sdk.JitsiMeetActivity;
/**
* The one and only {@link Activity} that the Jitsi Meet app needs. The
* {@code Activity} is launched in {@code singleTask} mode, so it will be
* created upon application initialization and there will be a single instance
* of it. Further attempts at launching the application once it was already
* launched will result in {@link Activity#onNewIntent(Intent)} being called.
*
* This {@code Activity} extends {@link JitsiMeetActivity} to keep the React
* Native CLI working, since the latter always tries to launch an
* {@code Activity} named {@code MainActivity} when doing
* {@code react-native run-android}.
*/
public class MainActivity extends JitsiMeetActivity {
/**
* {@inheritDoc}
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// As this is the Jitsi Meet app (i.e. not the Jitsi Meet SDK), we do
// want the Welcome page to be enabled. It defaults to disabled in the
// SDK at the time of this writing but it is clearer to be explicit
// about what we want anyway.
setWelcomePageEnabled(true);
super.onCreate(savedInstanceState);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,3 @@
<resources>
<string name="app_name">Jitsi Meet</string>
</resources>

View File

@@ -0,0 +1,7 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>

48
android/build.gradle Normal file
View File

@@ -0,0 +1,48 @@
// Top-level build file where you can add configuration options common to all
// sub-projects/modules.
buildscript {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha8'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files.
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is
// installed from npm.
url "$rootDir/../node_modules/react-native/android"
}
}
}
ext {
compileSdkVersion = 25
buildToolsVersion = "25.0.3"
minSdkVersion = 16
targetSdkVersion = 23
}
// Force the version of the Android build tools we have chosen on all
// subprojects. The forcing was introduced for react-native and the third-party
// modules that we utilize such as react-native-background-timer.
subprojects { subproject ->
afterEvaluate{
if (subproject.plugins.hasPlugin('android')
|| subproject.plugins.hasPlugin('android-library')) {
android {
buildToolsVersion rootProject.ext.buildToolsVersion
}
}
}
}

21
android/gradle.properties Normal file
View File

@@ -0,0 +1,21 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.useDeprecatedNdk=true
version=1

Binary file not shown.

View File

@@ -0,0 +1,6 @@
#Mon Jul 17 18:25:08 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-milestone-1-all.zip

164
android/gradlew vendored Executable file
View File

@@ -0,0 +1,164 @@
#!/usr/bin/env bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

90
android/gradlew.bat vendored Normal file
View File

@@ -0,0 +1,90 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

8
android/keystores/BUCK Normal file
View File

@@ -0,0 +1,8 @@
keystore(
name = 'debug',
store = 'debug.keystore',
properties = 'debug.keystore.properties',
visibility = [
'PUBLIC',
],
)

View File

@@ -0,0 +1,4 @@
key.store=debug.keystore
key.alias=androiddebugkey
key.store.password=android
key.alias.password=android

121
android/sdk/build.gradle Normal file
View File

@@ -0,0 +1,121 @@
apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
publishNonDefault true
}
buildTypes {
debug {}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.facebook.react:react-native:+'
compile project(':react-native-background-timer')
compile project(':react-native-immersive')
compile project(':react-native-keep-awake')
compile project(':react-native-vector-icons')
compile project(':react-native-webrtc')
}
// Build process helpers
//
void runBefore(String dependentTaskName, Task task) {
Task dependentTask = tasks.findByPath(dependentTaskName);
if (dependentTask != null) {
dependentTask.dependsOn task
}
}
gradle.projectsEvaluated {
android.buildTypes.all { buildType ->
def buildNameCapitalized = "${buildType.name.capitalize()}"
def bundlePath = "${buildDir}/intermediates/bundles/${buildType.name}"
// Bundle fonts in react-native-vector-icons.
//
def currentFontTask = tasks.create(
name: "copy${buildNameCapitalized}Fonts",
type: Copy) {
from("${projectDir}/../../fonts/jitsi.ttf")
from("${projectDir}/../../node_modules/react-native-vector-icons/Fonts/")
into("${bundlePath}/assets/fonts")
}
currentFontTask.dependsOn("merge${buildNameCapitalized}Resources")
currentFontTask.dependsOn("merge${buildNameCapitalized}Assets")
runBefore("processArmeabi-v7a${buildNameCapitalized}Resources", currentFontTask)
runBefore("processX86${buildNameCapitalized}Resources", currentFontTask)
runBefore("processUniversal${buildNameCapitalized}Resources", currentFontTask)
runBefore("process${buildNameCapitalized}Resources", currentFontTask)
// Bundle JavaScript and React resources.
// (adapted from react-native/react.gradle)
//
// React JS bundle directories
def jsBundleDir = file("${bundlePath}/assets")
def resourcesDir = file("${bundlePath}/res/merged")
def jsBundleFile = file("${jsBundleDir}/index.android.bundle")
// Bundle task name for variant.
def bundleJsAndAssetsTaskName = "bundle${buildNameCapitalized}JsAndAssets"
def currentBundleTask = tasks.create(
name: bundleJsAndAssetsTaskName,
type: Exec) {
// Set up inputs and outputs so gradle can cache the result.
def reactRoot = file("${projectDir}/../../")
inputs.files fileTree(dir: reactRoot, excludes: ['android/**', 'ios/**'])
outputs.dir jsBundleDir
outputs.dir resourcesDir
// Set up the call to the react-native cli.
workingDir reactRoot
// Create JS bundle
def devEnabled = !buildNameCapitalized.toLowerCase().contains('release')
commandLine(
'node',
'node_modules/react-native/local-cli/cli.js',
'bundle',
'--assets-dest', resourcesDir,
'--bundle-output', jsBundleFile,
'--dev', "${devEnabled}",
'--entry-file', 'index.android.js',
'--platform', 'android',
'--reset-cache')
// Disable bundling on dev builds
enabled !devEnabled
}
// Hook bundle${productFlavor}${buildType}JsAndAssets into the android build process
currentBundleTask.dependsOn("merge${buildNameCapitalized}Resources")
currentBundleTask.dependsOn("merge${buildNameCapitalized}Assets")
runBefore("processArmeabi-v7a${buildNameCapitalized}Resources", currentBundleTask)
runBefore("processX86${buildNameCapitalized}Resources", currentBundleTask)
runBefore("processUniversal${buildNameCapitalized}Resources", currentBundleTask)
runBefore("process${buildNameCapitalized}Resources", currentBundleTask)
}
}

25
android/sdk/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,25 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/scorretge/Library/Android/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,24 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.jitsi.meet.sdk">
<!-- XXX: ACCESS_NETWORK_STATE is required by WebRTC. -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
<!-- Tell the system this app requires OpenGL ES 2.0. -->
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<application android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true">
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
</manifest>

View File

@@ -0,0 +1,204 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import java.net.URL;
/**
* Base Activity for applications integrating Jitsi Meet at a higher level. It
* contains all the required wiring between the <tt>JKConferenceView</tt> and
* the Activity lifecycle methods already implemented.
*
* In this activity we use a single <tt>JKConferenceView</tt> instance. This
* instance gives us access to a view which displays the welcome page and the
* conference itself. All lifetime methods associated with this Activity are
* hooked to the React Native subsystem via proxy calls through the
* <tt>JKConferenceView</tt> static methods.
*/
public class JitsiMeetActivity extends AppCompatActivity {
/**
* The request code identifying requests for the permission to draw on top
* of other apps. The value must be 16-bit and is arbitrarily chosen here.
*/
private static final int OVERLAY_PERMISSION_REQUEST_CODE
= (int) (Math.random() * Short.MAX_VALUE);
/**
* Instance of the {@link JitsiMeetView} which this activity will display.
*/
private JitsiMeetView view;
/**
* Whether the Welcome page is enabled. The value is used only while
* {@link #view} equals {@code null}.
*/
private boolean welcomePageEnabled;
private boolean canRequestOverlayPermission() {
return
BuildConfig.DEBUG
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& getApplicationInfo().targetSdkVersion
>= Build.VERSION_CODES.M;
}
/**
*
* @see JitsiMeetView#getWelcomePageEnabled
*/
public boolean getWelcomePageEnabled() {
return view == null ? welcomePageEnabled : view.getWelcomePageEnabled();
}
/**
* Initializes the {@link #view} of this {@code JitsiMeetActivity} with a
* new {@link JitsiMeetView} instance.
*/
private void initializeView() {
view = new JitsiMeetView(this);
// In order to have the desired effect
// JitsiMeetView#setWelcomePageEnabled(boolean) must be invoked before
// JitsiMeetView#loadURL(URL).
view.setWelcomePageEnabled(welcomePageEnabled);
view.loadURL(null);
setContentView(view);
}
/**
* Loads the given URL and displays the conference. If the specified URL is
* null, the welcome page is displayed instead.
*
* @param url - The conference URL.
*/
public void loadURL(@Nullable URL url) {
view.loadURL(url);
}
/**
* {@inheritDoc}
*/
@Override
protected void onActivityResult(
int requestCode,
int resultCode,
Intent data) {
if (requestCode == OVERLAY_PERMISSION_REQUEST_CODE
&& canRequestOverlayPermission()) {
if (Settings.canDrawOverlays(this)) {
initializeView();
}
}
}
/**
* {@inheritDoc}
*/
@Override
public void onBackPressed() {
if (!JitsiMeetView.onBackPressed()) {
// Invoke the default handler if it wasn't handled by React.
super.onBackPressed();
}
}
/**
* {@inheritDoc}
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// In Debug builds React needs permission to write over other apps in
// order to display the warning and error overlays.
if (canRequestOverlayPermission() && !Settings.canDrawOverlays(this)) {
Intent intent
= new Intent(
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQUEST_CODE);
return;
}
initializeView();
}
/**
* {@inheritDoc}
*/
@Override
protected void onDestroy() {
super.onDestroy();
if (view != null) {
view.dispose();
view = null;
}
JitsiMeetView.onHostDestroy(this);
}
/**
* {@inheritDoc}
*/
@Override
public void onNewIntent(Intent intent) {
JitsiMeetView.onNewIntent(intent);
}
/**
* {@inheritDoc}
*/
@Override
protected void onPause() {
super.onPause();
JitsiMeetView.onHostPause(this);
}
/**
* {@inheritDoc}
*/
@Override
protected void onResume() {
super.onResume();
JitsiMeetView.onHostResume(this);
}
/**
*
* @see JitsiMeetView#setWelcomePageEnabled
*/
public void setWelcomePageEnabled(boolean welcomePageEnabled) {
if (view == null) {
this.welcomePageEnabled = welcomePageEnabled;
} else {
view.setWelcomePageEnabled(welcomePageEnabled);
}
}
}

View File

@@ -0,0 +1,324 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.widget.FrameLayout;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactRootView;
import com.facebook.react.common.LifecycleState;
import java.net.URL;
import java.util.Collections;
import java.util.Set;
import java.util.UUID;
import java.util.WeakHashMap;
public class JitsiMeetView extends FrameLayout {
/**
* Background color used by {@code JitsiMeetView} and the React Native root
* view.
*/
private static final int BACKGROUND_COLOR = 0xFF111111;
/**
* React Native bridge. The instance manager allows embedding applications
* to create multiple root views off the same JavaScript bundle.
*/
private static ReactInstanceManager reactInstanceManager;
private static final Set<JitsiMeetView> views
= Collections.newSetFromMap(new WeakHashMap<JitsiMeetView, Boolean>());
public static JitsiMeetView findViewByExternalAPIScope(
String externalAPIScope) {
for (JitsiMeetView view : views) {
if (view.externalAPIScope.equals(externalAPIScope)) {
return view;
}
}
return null;
}
/**
* Internal method to initialize the React Native instance manager. We
* create a single instance in order to load the JavaScript bundle a single
* time. All <tt>ReactRootView</tt> instances will be tied to the one and
* only <tt>ReactInstanceManager</tt>.
*
* @param application - <tt>Application</tt> instance which is running.
*/
private static void initReactInstanceManager(Application application) {
reactInstanceManager
= ReactInstanceManager.builder()
.setApplication(application)
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(new com.corbt.keepawake.KCKeepAwakePackage())
.addPackage(new com.facebook.react.shell.MainReactPackage())
.addPackage(new com.oblador.vectoricons.VectorIconsPackage())
.addPackage(new com.ocetnik.timer.BackgroundTimerPackage())
.addPackage(new com.oney.WebRTCModule.WebRTCModulePackage())
.addPackage(new com.rnimmersive.RNImmersivePackage())
.addPackage(new org.jitsi.meet.sdk.audiomode.AudioModePackage())
.addPackage(
new org.jitsi.meet.sdk.externalapi.ExternalAPIPackage())
.addPackage(new org.jitsi.meet.sdk.proximity.ProximityPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
}
/**
* Activity lifecycle method which should be called from
* <tt>Activity.onBackPressed</tt> so we can do the required internal
* processing.
*
* @return - true if the back-press was processed, false otherwise. In case
* false is returned the application should call the parent's
* implementation.
*/
public static boolean onBackPressed() {
if (reactInstanceManager != null) {
reactInstanceManager.onBackPressed();
return true;
} else {
return false;
}
}
/**
* Activity lifecycle method which should be called from
* <tt>Activity.onDestroy</tt> so we can do the required internal
* processing.
*
* @param activity - <tt>Activity</tt> being destroyed.
*/
public static void onHostDestroy(Activity activity) {
if (reactInstanceManager != null) {
reactInstanceManager.onHostDestroy(activity);
}
}
/**
* Activity lifecycle method which should be called from
* <tt>Activity.onPause</tt> so we can do the required internal processing.
*
* @param activity - <tt>Activity</tt> being paused.
*/
public static void onHostPause(Activity activity) {
if (reactInstanceManager != null) {
reactInstanceManager.onHostPause(activity);
}
}
/**
* Activity lifecycle method which should be called from
* <tt>Activity.onResume</tt> so we can do the required internal processing.
*
* @param activity - <tt>Activity</tt> being resumed.
*/
public static void onHostResume(Activity activity) {
if (reactInstanceManager != null) {
reactInstanceManager.onHostResume(activity, null);
}
}
/**
* Activity lifecycle method which should be called from
* <tt>Activity.onNewIntent</tt> so we can do the required internal
* processing. Note that this is only needed if the activity's "launchMode"
* was set to "singleTask". This is required for deep linking to work once
* the application is already running.
*
* @param intent - <tt>Intent</tt> instance which was received.
*/
public static void onNewIntent(Intent intent) {
if (reactInstanceManager != null) {
reactInstanceManager.onNewIntent(intent);
}
}
/**
* The unique identifier of this {@code JitsiMeetView} within the process
* for the purposes of {@link ExternalAPI}. The name scope was inspired by
* postis which we use on Web for the similar purposes of the iframe-based
* external API.
*/
private final String externalAPIScope;
/**
* {@link JitsiMeetViewListener} instance for reporting events occurring in
* Jitsi Meet.
*/
private JitsiMeetViewListener listener;
/**
* React Native root view.
*/
private ReactRootView reactRootView;
/**
* Whether the Welcome page is enabled.
*/
private boolean welcomePageEnabled;
public JitsiMeetView(@NonNull Context context) {
super(context);
setBackgroundColor(BACKGROUND_COLOR);
if (reactInstanceManager == null) {
initReactInstanceManager(((Activity) context).getApplication());
}
// Hook this JitsiMeetView into ExternalAPI.
externalAPIScope = UUID.randomUUID().toString();
views.add(this);
}
/**
* Releases the React resources (specifically the {@link ReactRootView})
* associated with this view.
*
* This method MUST be called when the Activity holding this view is destroyed, typically in the
* {@code onDestroy} method.
*/
public void dispose() {
if (reactRootView != null) {
removeView(reactRootView);
reactRootView.unmountReactApplication();
reactRootView = null;
}
}
/**
* Gets the {@link JitsiMeetViewListener} set on this {@code JitsiMeetView}.
*
* @return The {@code JitsiMeetViewListener} set on this
* {@code JitsiMeetView}.
*/
public JitsiMeetViewListener getListener() {
return listener;
}
/**
* Gets whether the Welcome page is enabled. If {@code true}, the Welcome
* page is rendered when this {@code JitsiMeetView} is not at a URL
* identifying a Jitsi Meet conference/room.
*
* @return {@true} if the Welcome page is enabled; otherwise, {@code false}.
*/
public boolean getWelcomePageEnabled() {
return welcomePageEnabled;
}
/**
* Loads a specific {@link URL} which may identify a conference to join. If
* the specified {@code URL} is {@code null} and the Welcome page is
* enabled, the Welcome page is displayed instead.
*
* @param url - The {@code URL} to load which may identify a conference to
* join.
*/
public void loadURL(@Nullable URL url) {
loadURLString(url == null ? null : url.toString());
}
/**
* Loads a specific URL which may identify a conference to join. The URL is
* specified in the form of a {@link Bundle} of properties which (1)
* internally are sufficient to construct a URL {@code String} while (2)
* abstracting the specifics of constructing the URL away from API
* clients/consumers. If the specified URL is {@code null} and the Welcome
* page is enabled, the Welcome page is displayed instead.
*
* @param urlObject - The URL to load which may identify a conference to
* join.
*/
public void loadURLObject(@Nullable Bundle urlObject) {
Bundle props = new Bundle();
// externalAPIScope
props.putString("externalAPIScope", externalAPIScope);
// url
if (urlObject != null) {
props.putBundle("url", urlObject);
}
// welcomePageEnabled
props.putBoolean("welcomePageEnabled", welcomePageEnabled);
// TODO: ReactRootView#setAppProperties is only available on React
// Native 0.45, so destroy the current root view and create a new one.
dispose();
reactRootView = new ReactRootView(getContext());
reactRootView.startReactApplication(reactInstanceManager, "App", props);
reactRootView.setBackgroundColor(BACKGROUND_COLOR);
addView(reactRootView);
}
/**
* Loads a specific URL {@link String} which may identify a conference to
* join. If the specified URL {@code String} is {@code null} and the Welcome
* page is enabled, the Welcome page is displayed instead.
*
* @param urlString - The URL {@code String} to load which may identify a
* conference to join.
*/
public void loadURLString(@Nullable String urlString) {
Bundle urlObject;
if (urlString == null) {
urlObject = null;
} else {
urlObject = new Bundle();
urlObject.putString("url", urlString);
}
loadURLObject(urlObject);
}
/**
* Sets a specific {@link JitsiMeetViewListener} on this
* {@code JitsiMeetView}.
*
* @param listener - The {@code JitsiMeetViewListener} to set on this
* {@code JitsiMeetView}.
*/
public void setListener(JitsiMeetViewListener listener) {
this.listener = listener;
}
/**
* Sets whether the Welcome page is enabled. Must be called before
* {@link #loadURL(URL)} for it to take effect.
*
* @param welcomePageEnabled {@code true} to enable the Welcome page;
* otherwise, {@code false}.
*/
public void setWelcomePageEnabled(boolean welcomePageEnabled) {
this.welcomePageEnabled = welcomePageEnabled;
}
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import java.util.Map;
/**
* Implements {@link JitsiMeetViewListener} so apps don't have to add stubs for
* all methods in the interface if they are only interested in some.
*/
public abstract class JitsiMeetViewAdapter implements JitsiMeetViewListener {
/**
* {@inheritDoc}
*/
@Override
public void onConferenceFailed(Map<String, Object> data) {
}
/**
* {@inheritDoc}
*/
@Override
public void onConferenceJoined(Map<String, Object> data) {
}
/**
* {@inheritDoc}
*/
@Override
public void onConferenceLeft(Map<String, Object> data) {
}
/**
* {@inheritDoc}
*/
@Override
public void onConferenceWillJoin(Map<String, Object> data) {
}
/**
* {@inheritDoc}
*/
@Override
public void onConferenceWillLeave(Map<String, Object> data) {
}
}

View File

@@ -0,0 +1,61 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import java.util.Map;
/**
* Interface for listening to events coming from Jitsi Meet.
*/
public interface JitsiMeetViewListener {
/**
* Called when joining a conference fails or an ongoing conference is
* interrupted due to a failure.
*
* @param data - Map with an "error" key describing the problem, and
* a "url" key with the conference URL.
*/
void onConferenceFailed(Map<String, Object> data);
/**
* Called when a conference was joined.
*
* @param data - Map with a "url" key with the conference URL.
*/
void onConferenceJoined(Map<String, Object> data);
/**
* Called when the conference was left, typically after hanging up.
*
* @param data - Map with a "url" key with the conference URL.
*/
void onConferenceLeft(Map<String, Object> data);
/**
* Called before the conference is joined.
*
* @param data - Map with a "url" key with the conference URL.
*/
void onConferenceWillJoin(Map<String, Object> data);
/**
* Called before the conference is left.
*
* @param data - Map with a "url" key with the conference URL.
*/
void onConferenceWillLeave(Map<String, Object> data);
}

View File

@@ -0,0 +1,349 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk.audiomode;
import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import java.util.HashMap;
import java.util.Map;
/**
* Module implementing a simple API to select the appropriate audio device for a
* conference call.
*
* Audio calls should use <tt>AudioModeModule.AUDIO_CALL</tt>, which uses the
* builtin earpiece, wired headset or bluetooth headset. The builtin earpiece is
* the default audio device.
*
* Video calls should should use <tt>AudioModeModule.VIDEO_CALL</tt>, which uses
* the builtin speaker, earpiece, wired headset or bluetooth headset. The
* builtin speaker is the default audio device.
*
* Before a call has started and after it has ended the
* <tt>AudioModeModule.DEFAULT</tt> mode should be used.
*/
public class AudioModeModule extends ReactContextBaseJavaModule {
/**
* Constants representing the audio mode.
* - DEFAULT: Used before and after every call. It represents the default
* audio routing scheme.
* - AUDIO_CALL: Used for audio only calls. It will use the earpiece by
* default, unless a wired or Bluetooth headset is connected.
* - VIDEO_CALL: Used for video calls. It will use the speaker by default,
* unless a wired or Bluetooth headset is connected.
*/
private static final int DEFAULT = 0;
private static final int AUDIO_CALL = 1;
private static final int VIDEO_CALL = 2;
/**
*
*/
private static final String ACTION_HEADSET_PLUG
= (Build.VERSION.SDK_INT >= 21)
? AudioManager.ACTION_HEADSET_PLUG
: Intent.ACTION_HEADSET_PLUG;
/**
* React Native module name.
*/
private static final String MODULE_NAME = "AudioMode";
/**
* Tag used when logging messages.
*/
static final String TAG = MODULE_NAME;
/**
* {@link AudioManager} instance used to interact with the Android audio
* subsystem.
*/
private final AudioManager audioManager;
/**
* {@link BluetoothHeadsetMonitor} for detecting Bluetooth device changes in
* old (< M) Android versions.
*/
private BluetoothHeadsetMonitor bluetoothHeadsetMonitor;
/**
* {@link Handler} for running all operations on the main thread.
*/
private final Handler mainThreadHandler
= new Handler(Looper.getMainLooper());
/**
* {@link Runnable} for running update operation on the main thread.
*/
private final Runnable mainThreadRunner
= new Runnable() {
@Override
public void run() {
if (mode != -1) {
updateAudioRoute(mode);
}
}
};
/**
* Audio mode currently in use.
*/
private int mode = -1;
/**
* Initializes a new module instance. There shall be a single instance of
* this module throughout the lifetime of the application.
*
* @param reactContext the {@link ReactApplicationContext} where this module
* is created.
*/
public AudioModeModule(ReactApplicationContext reactContext) {
super(reactContext);
audioManager
= (AudioManager)
reactContext.getSystemService(Context.AUDIO_SERVICE);
// Setup runtime device change detection.
setupAudioRouteChangeDetection();
}
/**
* Gets a mapping with the constants this module is exporting.
*
* @return a {@link Map} mapping the constants to be exported with their
* values.
*/
@Override
public Map<String, Object> getConstants() {
Map<String, Object> constants = new HashMap<>();
constants.put("AUDIO_CALL", AUDIO_CALL);
constants.put("DEFAULT", DEFAULT);
constants.put("VIDEO_CALL", VIDEO_CALL);
return constants;
}
/**
* Gets the name for this module, to be used in the React Native bridge.
*
* @return a string with the module name.
*/
@Override
public String getName() {
return MODULE_NAME;
}
/**
* Helper method to trigger an audio route update when devices change. It
* makes sure the operation is performed on the main thread.
*/
void onAudioDeviceChange() {
mainThreadHandler.post(mainThreadRunner);
}
/**
* Helper method to set the output route to a Bluetooth device.
*
* @param enabled true if Bluetooth should use used, false otherwise.
*/
private void setBluetoothAudioRoute(boolean enabled) {
if (enabled) {
audioManager.startBluetoothSco();
audioManager.setBluetoothScoOn(true);
} else {
audioManager.setBluetoothScoOn(false);
audioManager.stopBluetoothSco();
}
}
/**
* Public method to set the current audio mode.
*
* @param mode the desired audio mode.
* @param promise a {@link Promise} which will be resolved if the audio mode
* could be updated successfully, and it will be rejected otherwise.
*/
@ReactMethod
public void setMode(final int mode, final Promise promise) {
if (mode != DEFAULT && mode != AUDIO_CALL && mode != VIDEO_CALL) {
promise.reject("setMode", "Invalid audio mode " + mode);
return;
}
Runnable r = new Runnable() {
@Override
public void run() {
boolean success;
try {
success = updateAudioRoute(mode);
} catch (Throwable e) {
success = false;
Log.e(
TAG,
"Failed to update audio route for mode: " + mode,
e);
}
if (success) {
AudioModeModule.this.mode = mode;
promise.resolve(null);
} else {
promise.reject(
"setMode",
"Failed to set audio mode to " + mode);
}
}
};
mainThreadHandler.post(r);
}
/**
* Setup the audio route change detection mechanism. We use the
* {@link android.media.AudioDeviceCallback} API on Android >= 23 only.
*/
private void setupAudioRouteChangeDetection() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
setupAudioRouteChangeDetectionM();
} else {
setupAudioRouteChangeDetectionPreM();
}
}
/**
* Audio route change detection mechanism for Android API >= 23.
*/
@TargetApi(Build.VERSION_CODES.M)
private void setupAudioRouteChangeDetectionM() {
android.media.AudioDeviceCallback audioDeviceCallback =
new android.media.AudioDeviceCallback() {
@Override
public void onAudioDevicesAdded(
AudioDeviceInfo[] addedDevices) {
Log.d(TAG, "Audio devices added");
onAudioDeviceChange();
}
@Override
public void onAudioDevicesRemoved(
AudioDeviceInfo[] removedDevices) {
Log.d(TAG, "Audio devices removed");
onAudioDeviceChange();
}
};
audioManager.registerAudioDeviceCallback(audioDeviceCallback, null);
}
/**
* Audio route change detection mechanism for Android API < 23.
*/
private void setupAudioRouteChangeDetectionPreM() {
Context context = getReactApplicationContext();
// Detect changes in wired headset connections.
IntentFilter wiredHeadSetFilter = new IntentFilter(ACTION_HEADSET_PLUG);
BroadcastReceiver wiredHeadsetReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Wired headset added / removed");
onAudioDeviceChange();
}
};
context.registerReceiver(wiredHeadsetReceiver, wiredHeadSetFilter);
// Detect Bluetooth device changes.
bluetoothHeadsetMonitor = new BluetoothHeadsetMonitor(this, context);
}
/**
* Updates the audio route for the given mode.
*
* @param mode the audio mode to be used when computing the audio route.
* @return true if the audio route was updated successfully, false
* otherwise.
*/
private boolean updateAudioRoute(int mode) {
Log.d(TAG, "Update audio route for mode: " + mode);
if (mode == DEFAULT) {
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.abandonAudioFocus(null);
audioManager.setSpeakerphoneOn(false);
audioManager.setMicrophoneMute(true);
setBluetoothAudioRoute(false);
return true;
}
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setMicrophoneMute(false);
if (audioManager.requestAudioFocus(
null,
AudioManager.STREAM_VOICE_CALL,
AudioManager.AUDIOFOCUS_GAIN)
== AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
Log.d(TAG, "Audio focus request failed");
return false;
}
boolean useSpeaker = (mode == VIDEO_CALL);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// On Android >= M we use the AudioDeviceCallback API, so turn on
// Bluetooth SCO from the start.
if (audioManager.isBluetoothScoAvailableOffCall()) {
audioManager.startBluetoothSco();
}
} else {
// On older Android versions we must set the Bluetooth route
// manually. Also disable the speaker in that case.
setBluetoothAudioRoute(
bluetoothHeadsetMonitor.isHeadsetAvailable());
if (bluetoothHeadsetMonitor.isHeadsetAvailable()) {
useSpeaker = false;
}
}
// XXX: isWiredHeadsetOn is not deprecated when used just for knowing if
// there is a wired headset connected, regardless of audio being routed
// to it.
audioManager.setSpeakerphoneOn(
useSpeaker
&& !(audioManager.isWiredHeadsetOn()
|| audioManager.isBluetoothScoOn()));
return true;
}
}

View File

@@ -0,0 +1,64 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk.audiomode;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Implements {@link ReactPackage} for {@link AudioModeModule}.
*/
public class AudioModePackage implements ReactPackage {
/**
* {@inheritDoc}
*/
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
/**
* {@inheritDoc}
*
* @return List of native modules to be exposed by React Native.
*/
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new AudioModeModule(reactContext));
return modules;
}
/**
* {@inheritDoc}
*/
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}

View File

@@ -0,0 +1,204 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk.audiomode;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
/**
* Helper class to detect and handle Bluetooth device changes. It monitors
* Bluetooth headsets being connected / disconnected and notifies the module
* about device changes when this occurs.
*/
public class BluetoothHeadsetMonitor {
/**
* {@link AudioModeModule} where this monitor reports.
*/
private final AudioModeModule audioModeModule;
/**
* The {@link Context} in which {@link #audioModeModule} executes.
*/
private final Context context;
/**
* Reference to a proxy object which allows us to query connected devices.
*/
private BluetoothHeadset headset;
/**
* Flag indicating if there are any Bluetooth headset devices currently
* available.
*/
private boolean headsetAvailable = false;
/**
* {@link Handler} for running all operations on the main thread.
*/
private final Handler mainThreadHandler
= new Handler(Looper.getMainLooper());
/**
* Helper for running Bluetooth operations on the main thread.
*/
private final Runnable updateDevicesRunnable
= new Runnable() {
@Override
public void run() {
headsetAvailable
= (headset != null)
&& !headset.getConnectedDevices().isEmpty();
audioModeModule.onAudioDeviceChange();
}
};
public BluetoothHeadsetMonitor(
AudioModeModule audioModeModule,
Context context) {
this.audioModeModule = audioModeModule;
this.context = context;
AudioManager audioManager
= (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (!audioManager.isBluetoothScoAvailableOffCall()) {
Log.w(AudioModeModule.TAG, "Bluetooth SCO is not available");
return;
}
if (getBluetoothHeadsetProfileProxy()) {
registerBluetoothReceiver();
// Initial detection.
updateDevices();
}
}
private boolean getBluetoothHeadsetProfileProxy() {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null) {
Log.w(AudioModeModule.TAG, "Device doesn't support Bluetooth");
return false;
}
// XXX: The profile listener listens for system services of the given
// type being available to the application. That is, if our Bluetooth
// adapter has the "headset" profile.
BluetoothProfile.ServiceListener listener
= new BluetoothProfile.ServiceListener() {
@Override
public void onServiceConnected(
int profile,
BluetoothProfile proxy) {
if (profile == BluetoothProfile.HEADSET) {
headset = (BluetoothHeadset) proxy;
updateDevices();
}
}
@Override
public void onServiceDisconnected(int profile) {
// The logic is the same as the logic of onServiceConnected.
onServiceConnected(profile, /* proxy */ null);
}
};
return
adapter.getProfileProxy(
context,
listener,
BluetoothProfile.HEADSET);
}
/**
* Returns the current headset availability.
*
* @return true if there is a Bluetooth headset connected, false otherwise.
*/
public boolean isHeadsetAvailable() {
return headsetAvailable;
}
private void onBluetoothReceiverReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) {
// XXX: This action will be fired when a Bluetooth headset is
// connected or disconnected to the system. This is not related to
// audio routing.
int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, -99);
switch (state) {
case BluetoothHeadset.STATE_CONNECTED:
case BluetoothHeadset.STATE_DISCONNECTED:
Log.d(
AudioModeModule.TAG,
"BT headset connection state changed: " + state);
updateDevices();
break;
}
} else if (action.equals(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED)) {
// XXX: This action will be fired when the connection established
// with a Bluetooth headset (called a SCO connection) changes state.
// When the SCO connection is active we route audio to it.
int state
= intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -99);
switch (state) {
case AudioManager.SCO_AUDIO_STATE_CONNECTED:
case AudioManager.SCO_AUDIO_STATE_DISCONNECTED:
Log.d(
AudioModeModule.TAG,
"BT SCO connection state changed: " + state);
updateDevices();
break;
}
}
}
private void registerBluetoothReceiver() {
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
onBluetoothReceiverReceive(context, intent);
}
};
IntentFilter filter = new IntentFilter();
filter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED);
filter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
context.registerReceiver(receiver, filter);
}
/**
* Detects if there are new devices connected / disconnected and fires the
* {@link AudioModeModule#onAudioDeviceChange()} callback.
*/
private void updateDevices() {
mainThreadHandler.post(updateDevicesRunnable);
}
}

View File

@@ -0,0 +1,119 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk.externalapi;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import org.jitsi.meet.sdk.JitsiMeetView;
import org.jitsi.meet.sdk.JitsiMeetViewListener;
import java.util.HashMap;
/**
* Module implementing a simple API to enable a proximity sensor-controlled
* wake lock. When the lock is held, if the proximity sensor detects a nearby
* object it will dim the screen and disable touch controls. The functionality
* is used with the conference audio-only mode.
*/
public class ExternalAPIModule extends ReactContextBaseJavaModule {
/**
* React Native module name.
*/
private static final String MODULE_NAME = "ExternalAPI";
/**
* Initializes a new module instance. There shall be a single instance of
* this module throughout the lifetime of the application.
*
* @param reactContext the {@link ReactApplicationContext} where this module
* is created.
*/
public ExternalAPIModule(ReactApplicationContext reactContext) {
super(reactContext);
}
/**
* Gets the name of this module to be used in the React Native bridge.
*
* @return The name of this module to be used in the React Native bridge.
*/
@Override
public String getName() {
return MODULE_NAME;
}
/**
* Dispatches an event that occurred on JavaScript to the view's listener.
*
* @param name The name of the event.
* @param data The details/specifics of the event to send determined
* by/associated with the specified {@code name}.
* @param scope
*/
@ReactMethod
public void sendEvent(String name, ReadableMap data, String scope) {
// The JavaScript App needs to provide uniquely identifying information
// to the native ExternalAPI module so that the latter may match the
// former to the native JitsiMeetView which hosts it.
JitsiMeetView view = JitsiMeetView.findViewByExternalAPIScope(scope);
if (view == null) {
return;
}
JitsiMeetViewListener listener = view.getListener();
if (listener == null) {
return;
}
// TODO Converting a ReadableMap to a HashMap is not supported until
// React Native 0.46.
HashMap<String, Object> dataMap = new HashMap<>();
switch (name) {
case "CONFERENCE_FAILED":
dataMap.put("error", data.getString("error"));
dataMap.put("url", data.getString("url"));
listener.onConferenceFailed(dataMap);
break;
case "CONFERENCE_JOINED":
dataMap.put("url", data.getString("url"));
listener.onConferenceJoined(dataMap);
break;
case "CONFERENCE_LEFT":
dataMap.put("url", data.getString("url"));
listener.onConferenceLeft(dataMap);
break;
case "CONFERENCE_WILL_JOIN":
dataMap.put("url", data.getString("url"));
listener.onConferenceWillJoin(dataMap);
break;
case "CONFERENCE_WILL_LEAVE":
dataMap.put("url", data.getString("url"));
listener.onConferenceWillLeave(dataMap);
break;
}
}
}

View File

@@ -0,0 +1,64 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk.externalapi;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Implements {@link ReactPackage} for {@link ExternalAPIModule}.
*/
public class ExternalAPIPackage implements ReactPackage {
/**
* {@inheritDoc}
*/
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
/**
* {@inheritDoc}
*
* @return List of native modules to be exposed by React Native.
*/
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new ExternalAPIModule(reactContext));
return modules;
}
/**
* {@inheritDoc}
*/
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}

View File

@@ -0,0 +1,117 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk.proximity;
import android.content.Context;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.UiThreadUtil;
/**
* Module implementing a simple API to enable a proximity sensor-controlled
* wake lock. When the lock is held, if the proximity sensor detects a nearby
* object it will dim the screen and disable touch controls. The functionality
* is used with the conference audio-only mode.
*/
public class ProximityModule extends ReactContextBaseJavaModule {
/**
* React Native module name.
*/
private static final String MODULE_NAME = "Proximity";
/**
* This type of wake lock (the one activated by the proximity sensor) has
* been available for a while, but the constant was only exported in API
* level 21 (Android Marshmallow) so make no assumptions and use its value
* directly.
*
* TODO: Remove when we bump the API level to 21.
*/
private static final int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32;
/**
* {@link WakeLock} instance.
*/
private final WakeLock wakeLock;
/**
* Initializes a new module instance. There shall be a single instance of
* this module throughout the lifetime of the application.
*
* @param reactContext The {@link ReactApplicationContext} where this module
* is created.
*/
public ProximityModule(ReactApplicationContext reactContext) {
super(reactContext);
WakeLock wakeLock;
PowerManager powerManager
= (PowerManager)
reactContext.getSystemService(Context.POWER_SERVICE);
try {
wakeLock
= powerManager.newWakeLock(
PROXIMITY_SCREEN_OFF_WAKE_LOCK,
MODULE_NAME);
} catch (Throwable ignored) {
wakeLock = null;
}
this.wakeLock = wakeLock;
}
/**
* Gets the name of this module to be used in the React Native bridge.
*
* @return The name of this module to be used in the React Native bridge.
*/
@Override
public String getName() {
return MODULE_NAME;
}
/**
* Acquires / releases the proximity sensor wake lock.
*
* @param enabled {@code true} to enable the proximity sensor; otherwise,
* {@code false}.
*/
@ReactMethod
public void setEnabled(final boolean enabled) {
if (wakeLock == null) {
return;
}
UiThreadUtil.runOnUiThread(new Runnable() {
@Override
public void run() {
if (enabled) {
if (!wakeLock.isHeld()) {
wakeLock.acquire();
}
} else if (wakeLock.isHeld()) {
wakeLock.release();
}
}
});
}
}

View File

@@ -0,0 +1,64 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk.proximity;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Implements {@link ReactPackage} for {@link ProximityModule}.
*/
public class ProximityPackage implements ReactPackage {
/**
* {@inheritDoc}
*/
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
/**
* {@inheritDoc}
*
* @return List of native modules to be exposed by React Native.
*/
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new ProximityModule(reactContext));
return modules;
}
/**
* {@inheritDoc}
*/
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}

View File

@@ -0,0 +1,3 @@
<resources>
<string name="app_name">Jitsi Meet SDK</string>
</resources>

13
android/settings.gradle Normal file
View File

@@ -0,0 +1,13 @@
rootProject.name = 'jitsi-meet'
include ':app', ':sdk'
include ':react-native-background-timer'
project(':react-native-background-timer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-timer/android')
include ':react-native-immersive'
project(':react-native-immersive').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-immersive/android')
include ':react-native-keep-awake'
project(':react-native-keep-awake').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keep-awake/android')
include ':react-native-vector-icons'
project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android')
include ':react-native-webrtc'
project(':react-native-webrtc').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webrtc/android')

169
app.js
View File

@@ -1,144 +1,57 @@
/* global $, JitsiMeetJS, config, getRoomName */
/* application specific logic */
import "babel-polyfill";
import "jquery";
import "jquery-ui";
import "strophe";
import "strophe-disco";
import "strophe-caps";
import "tooltip";
import "popover";
import "jQuery-Impromptu";
import "autosize";
window.toastr = require("toastr");
import 'jquery';
import 'jquery-contextmenu';
import 'jquery-ui';
import 'strophe';
import 'strophe-disco';
import 'jQuery-Impromptu';
import 'autosize';
import URLProcessor from "./modules/config/URLProcessor";
import RoomnameGenerator from './modules/util/RoomnameGenerator';
import 'aui';
import 'aui-experimental';
import 'aui-css';
import 'aui-experimental-css';
import UI from "./modules/UI/UI";
import settings from "./modules/settings/Settings";
import conference from './conference';
import API from './modules/API/API';
import API from './modules/API';
import keyboardshortcut from './modules/keyboardshortcut/keyboardshortcut';
import remoteControl from './modules/remotecontrol/RemoteControl';
import settings from './modules/settings/Settings';
import translation from './modules/translation/translation';
import UI from './modules/UI/UI';
import UIEvents from './service/UI/UIEvents';
window.APP = {
API,
conference,
/**
* Builds and returns the room name.
*/
function buildRoomName () {
let roomName = getRoomName();
if(!roomName) {
let word = RoomnameGenerator.generateRoomWithoutSeparator();
roomName = word.toLowerCase();
window.history.pushState(
'VideoChat', `Room: ${word}`, window.location.pathname + word
);
}
return roomName;
}
const APP = {
// Used by do_external_connect.js if we receive the attach data after
// connect was already executed. status property can be "initialized",
// "ready" or "connecting". We are interested in "ready" status only which
// connect was already executed. status property can be 'initialized',
// 'ready', or 'connecting'. We are interested in 'ready' status only which
// means that connect was executed but we have to wait for the attach data.
// In status "ready" handler property will be set to a function that will
// In status 'ready' handler property will be set to a function that will
// finish the connect process when the attach data or error is received.
connect: {
status: "initialized",
handler: null
handler: null,
status: 'initialized'
},
// Used for automated performance tests
performanceTimes: {
"index.loaded": window.indexLoadedTime
// Used for automated performance tests.
connectionTimes: {
'index.loaded': window.indexLoadedTime
},
UI,
keyboardshortcut,
remoteControl,
settings,
conference,
connection: null,
API,
init () {
this.keyboardshortcut =
require("./modules/keyboardshortcut/keyboardshortcut");
this.translation = require("./modules/translation/translation");
this.configFetch = require("./modules/config/HttpConfigFetch");
}
translation,
UI
};
function init() {
var isUIReady = APP.UI.start();
if (isUIReady) {
APP.conference.init({roomName: buildRoomName()}).then(function () {
APP.UI.initConference();
APP.UI.addListener(UIEvents.LANG_CHANGED, function (language) {
APP.translation.setLanguage(language);
APP.settings.setLanguage(language);
});
APP.keyboardshortcut.init();
}).catch(function (err) {
console.error(err);
});
}
}
/**
* If we have an HTTP endpoint for getting config.json configured we're going to
* read it and override properties from config.js and interfaceConfig.js.
* If there is no endpoint we'll just continue with initialization.
* Keep in mind that if the endpoint has been configured and we fail to obtain
* the config for any reason then the conference won't start and error message
* will be displayed to the user.
*/
function obtainConfigAndInit() {
let roomName = APP.conference.roomName;
if (config.configLocation) {
APP.configFetch.obtainConfig(
config.configLocation, roomName,
// Get config result callback
function(success, error) {
if (success) {
var now = APP.performanceTimes["configuration.fetched"] =
window.performance.now();
console.log("(TIME) configuration fetched:\t", now);
init();
} else {
// Show obtain config error,
// pass the error object for report
APP.UI.messageHandler.openReportDialog(
null, "dialog.connectError", error);
}
});
} else {
require("./modules/config/BoshAddressChoice").chooseAddress(
config, roomName);
init();
}
}
$(document).ready(function () {
var now = APP.performanceTimes["document.ready"] = window.performance.now();
console.log("(TIME) document ready:\t", now);
URLProcessor.setConfigParametersFromUrl();
APP.init();
APP.translation.init(settings.getLanguage());
APP.API.init();
obtainConfigAndInit();
});
$(window).bind('beforeunload', function () {
APP.API.dispose();
});
module.exports = APP;
// TODO The execution of the mobile app starts from react/index.native.js.
// Similarly, the execution of the Web app should start from react/index.web.js
// for the sake of consistency and ease of understanding. Temporarily though
// because we are at the beginning of introducing React into the Web app, allow
// the execution of the Web app to start from app.js in order to reduce the
// complexity of the beginning step.
import './react';

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +1,27 @@
/* jshint -W101 */
var config = {
/* jshint maxlen:false */
var config = { // eslint-disable-line no-unused-vars
// configLocation: './config.json', // see ./modules/HttpConfigFetch.js
hosts: {
domain: 'jitsi-meet.example.com',
//anonymousdomain: 'guest.example.com',
//authdomain: 'jitsi-meet.example.com', // defaults to <domain>
muc: 'conference.jitsi-meet.example.com', // FIXME: use XEP-0030
bridge: 'jitsi-videobridge.jitsi-meet.example.com', // FIXME: use XEP-0030
//jirecon: 'jirecon.jitsi-meet.example.com',
//call_control: 'callcontrol.jitsi-meet.example.com',
//focus: 'focus.jitsi-meet.example.com', // defaults to 'focus.jitsi-meet.example.com'
},
testing: {
/**
* Enables experimental simulcast support on Firefox.
*/
enableFirefoxSimulcast: false,
/**
* P2P test mode disables automatic switching to P2P when there are 2
* participants in the conference.
*/
p2pTestMode: false,
},
// getroomnode: function (path) { return 'someprefixpossiblybasedonpath'; },
// useStunTurn: true, // use XEP-0215 to fetch STUN and TURN server
// useIPv6: true, // ipv6 support. use at your own risk
@@ -19,14 +30,17 @@ var config = {
clientNode: 'http://jitsi.org/jitsimeet', // The name of client node advertised in XEP-0115 'c' stanza
//focusUserJid: 'focus@auth.jitsi-meet.example.com', // The real JID of focus participant - can be overridden here
//defaultSipNumber: '', // Default SIP number
// Desktop sharing method. Can be set to 'ext', 'webrtc' or false to disable.
desktopSharingChromeMethod: 'ext',
/**
* Disables desktop sharing functionality.
*/
disableDesktopSharing: false,
// The ID of the jidesha extension for Chrome.
desktopSharingChromeExtId: 'diibjkoicjeejcmhdnailmkgecihlobk',
desktopSharingChromeExtId: null,
// Whether desktop sharing should be disabled on Chrome.
desktopSharingChromeDisabled: true,
// The media sources to use when using screen sharing with the Chrome
// extension.
desktopSharingChromeSources: ['screen', 'window'],
desktopSharingChromeSources: ['screen', 'window', 'tab'],
// Required version of Chrome extension
desktopSharingChromeMinExtVersion: '0.1',
@@ -34,13 +48,13 @@ var config = {
// extension is required.
desktopSharingFirefoxExtId: null,
// Whether desktop sharing should be disabled on Firefox.
desktopSharingFirefoxDisabled: true,
desktopSharingFirefoxDisabled: false,
// The maximum version of Firefox which requires a jidesha extension.
// Example: if set to 41, we will require the extension for Firefox versions
// up to and including 41. On Firefox 42 and higher, we will run without the
// extension.
// If set to -1, an extension will be required for all versions of Firefox.
desktopSharingFirefoxMaxVersionExtRequired: -1,
desktopSharingFirefoxMaxVersionExtRequired: 51,
// The URL to the Firefox extension for desktop sharing.
desktopSharingFirefoxExtensionURL: null,
@@ -50,18 +64,24 @@ var config = {
webrtcIceTcpDisable: false,
openSctp: true, // Toggle to enable/disable SCTP channels
// Disable hiding of remote thumbnails when in a 1-on-1 conference call.
disable1On1Mode: false,
disableStats: false,
disableAudioLevels: false,
channelLastN: -1, // The default value of the channel attribute last-n.
adaptiveLastN: false,
//disableAdaptiveSimulcast: false,
enableRecording: false,
enableWelcomePage: true,
//enableClosePage: false, // enabling the close page will ignore the welcome
// page redirection when call is hangup
disableSimulcast: false,
logStats: false, // Enable logging of PeerConnection stats via the focus
// requireDisplayName: true, // Forces the participants that doesn't have display name to enter it when they enter the room.
startAudioOnly: false, // Will start the conference in the audio only mode (no video is being received nor sent)
startScreenSharing: false, // Will try to start with screensharing instead of camera
// startAudioMuted: 10, // every participant after the Nth will start audio muted
// startVideoMuted: 10, // every participant after the Nth will start video muted
startWithAudioMuted: false, // will start with the microphone muted
startWithVideoMuted: false, // will start with the camera turned off
// defaultLanguage: "en",
// To enable sending statistics to callstats.io you should provide Applicaiton ID and Secret.
// callStatsID: "", // Application ID for callstats.io API
@@ -70,5 +90,47 @@ var config = {
'During that time service will not be available. ' +
'Apologise for inconvenience.',*/
disableThirdPartyRequests: false,
minHDHeight: 540
// The minumum value a video's height (or width, whichever is smaller) needs
// to be in order to be considered high-definition.
minHDHeight: 540,
// If true - all users without token will be considered guests and all users
// with token will be considered non-guests. Only guests will be allowed to
// edit their profile.
enableUserRolesBasedOnToken: false,
// Suspending video might cause problems with audio playback. Disabling until these are fixed.
disableSuspendVideo: true,
// disables or enables RTX (RFC 4588) (defaults to false).
disableRtx: false,
// Sets the preferred resolution (height) for local video. Defaults to 720.
resolution: 720,
// Peer-To-Peer mode: used (if enabled) when there are just 2 participants.
p2p: {
// Enables peer to peer mode. When enabled system will try to establish
// direct connection given that there are exactly 2 participants in
// the room. If that succeeds the conference will stop sending data
// through the JVB and use the peer to peer connection instead. When 3rd
// participant joins the conference will be moved back to the JVB
// connection.
enabled: true,
// The STUN servers that will be used in the peer to peer connections
// useStunTurn: true, // use XEP-0215 to fetch STUN and TURN server
stunServers: [
{ urls: "stun:stun.l.google.com:19302" },
{ urls: "stun:stun1.l.google.com:19302" },
{ urls: "stun:stun2.l.google.com:19302" }
],
// If set to true, it will prefer to use H.264 for P2P calls (if H.264
// is supported).
preferH264: true
// How long we're going to wait, before going back to P2P after
// the 3rd participant has left the conference (to filter out page reload)
//backToP2PDelay: 5
},
// Information about the jitsi-meet instance we are connecting to, including the
// user region as seen by the server.
deploymentInfo: {
//shard: "shard1",
//region: "europe",
//userRegion: "asia"
}
};

View File

@@ -1,9 +1,19 @@
/* global APP, JitsiMeetJS, config */
//FIXME:
import LoginDialog from './modules/UI/authentication/LoginDialog';
import AuthHandler from './modules/UI/authentication/AuthHandler';
import jitsiLocalStorage from './modules/util/JitsiLocalStorage';
import {
connectionEstablished,
connectionFailed
} from './react/features/base/connection';
import {
isFatalJitsiConnectionError
} from './react/features/base/lib-jitsi-meet';
const ConnectionEvents = JitsiMeetJS.events.connection;
const ConnectionErrors = JitsiMeetJS.errors.connection;
const logger = require("jitsi-meet-logger").getLogger(__filename);
/**
* Checks if we have data to use attach instead of connect. If we have the data
@@ -22,7 +32,7 @@ function checkForAttachParametersAndConnect(id, password, connection) {
// When connection optimization is not deployed or enabled the default
// value will be window.XMPPAttachInfo.status = "error"
// If the connection optimization is deployed and enabled and there is
// a failure the value will be window.XMPPAttachInfo.status = "error"
// a failure the value will be window.XMPPAttachInfo.status = "error"
if(window.XMPPAttachInfo.status === "error") {
connection.connect({id, password});
return;
@@ -31,6 +41,7 @@ function checkForAttachParametersAndConnect(id, password, connection) {
var attachOptions = window.XMPPAttachInfo.data;
if(attachOptions) {
connection.attach(attachOptions);
delete window.XMPPAttachInfo.data;
} else {
connection.connect({id, password});
}
@@ -50,40 +61,56 @@ function checkForAttachParametersAndConnect(id, password, connection) {
* everything is ok, else error.
*/
function connect(id, password, roomName) {
let connectionConfig = config;
const connectionConfig = Object.assign({}, config);
const { issuer, jwt } = APP.store.getState()['features/jwt'];
connectionConfig.bosh += '?room=' + roomName;
let connection
= new JitsiMeetJS.JitsiConnection(null, config.token, config);
= new JitsiMeetJS.JitsiConnection(
null,
jwt && issuer && issuer !== 'anonymous' ? jwt : undefined,
connectionConfig);
return new Promise(function (resolve, reject) {
connection.addEventListener(
ConnectionEvents.CONNECTION_ESTABLISHED, handleConnectionEstablished
);
ConnectionEvents.CONNECTION_ESTABLISHED,
handleConnectionEstablished);
connection.addEventListener(
ConnectionEvents.CONNECTION_FAILED, handleConnectionFailed
);
ConnectionEvents.CONNECTION_FAILED,
handleConnectionFailed);
connection.addEventListener(
ConnectionEvents.CONNECTION_FAILED,
connectionFailedHandler);
function connectionFailedHandler(error, errMsg) {
APP.store.dispatch(connectionFailed(connection, error, errMsg));
if (isFatalJitsiConnectionError(error)) {
connection.removeEventListener(
ConnectionEvents.CONNECTION_FAILED,
connectionFailedHandler);
}
}
function unsubscribe() {
connection.removeEventListener(
ConnectionEvents.CONNECTION_ESTABLISHED,
handleConnectionEstablished
);
handleConnectionEstablished);
connection.removeEventListener(
ConnectionEvents.CONNECTION_FAILED,
handleConnectionFailed
);
handleConnectionFailed);
}
function handleConnectionEstablished() {
APP.store.dispatch(connectionEstablished(connection));
unsubscribe();
resolve(connection);
}
function handleConnectionFailed(err) {
unsubscribe();
console.error("CONNECTION FAILED:", err);
logger.error("CONNECTION FAILED:", err);
reject(err);
}
@@ -91,32 +118,6 @@ function connect(id, password, roomName) {
});
}
/**
* Show Authentication Dialog and try to connect with new credentials.
* If failed to connect because of PASSWORD_REQUIRED error
* then ask for password again.
* @returns {Promise<JitsiConnection>}
*/
function requestAuth() {
return new Promise(function (resolve, reject) {
let authDialog = LoginDialog.showAuthDialog(
function (id, password) {
connect(id, password).then(function (connection) {
authDialog.close();
resolve(connection);
}, function (err) {
if (err === ConnectionErrors.PASSWORD_REQUIRED) {
authDialog.displayError(err);
} else {
authDialog.close();
reject(err);
}
});
}
);
});
}
/**
* Open JitsiConnection using provided credentials.
* If retry option is true it will show auth dialog on PASSWORD_REQUIRED error.
@@ -131,20 +132,28 @@ function requestAuth() {
* @returns {Promise<JitsiConnection>}
*/
export function openConnection({id, password, retry, roomName}) {
return connect(id, password, roomName).catch(function (err) {
if (!retry) {
throw err;
let usernameOverride
= jitsiLocalStorage.getItem("xmpp_username_override");
let passwordOverride
= jitsiLocalStorage.getItem("xmpp_password_override");
if (usernameOverride && usernameOverride.length > 0) {
id = usernameOverride;
}
if (passwordOverride && passwordOverride.length > 0) {
password = passwordOverride;
}
return connect(id, password, roomName).catch(err => {
if (retry) {
const { issuer, jwt } = APP.store.getState()['features/jwt'];
if (err === ConnectionErrors.PASSWORD_REQUIRED
&& (!jwt || issuer === 'anonymous')) {
return AuthHandler.requestAuth(roomName, connect);
}
}
if (err === ConnectionErrors.PASSWORD_REQUIRED) {
// do not retry if token is not valid
if (config.token) {
throw err;
} else {
return requestAuth();
}
} else {
throw err;
}
throw err;
});
}

View File

@@ -0,0 +1,3 @@
module.exports = {
'extends': '../react/.eslintrc.js'
};

View File

@@ -1,80 +1,82 @@
/* global config, getRoomName, getConfigParamsFromUrl */
/* global createConnectionExternally */
/* global config, createConnectionExternally */
import getRoomName from '../react/features/base/config/getRoomName';
import parseURLParams from '../react/features/base/config/parseURLParams';
/**
* Implements extrnal connect using createConnectionExtenally function defined
* in external_connect.js for Jitsi Meet. Parses the room name and token from
* the url and executes createConnectionExtenally.
* Implements external connect using createConnectionExternally function defined
* in external_connect.js for Jitsi Meet. Parses the room name and JSON Web
* Token (JWT) from the URL and executes createConnectionExternally.
*
* NOTE: If you are using lib-jitsi-meet without Jitsi Meet you should use this
* file as reference only because the implementation is Jitsi Meet specific.
* NOTE: If you are using lib-jitsi-meet without Jitsi Meet, you should use this
* file as reference only because the implementation is Jitsi Meet-specific.
*
* NOTE: For optimal results this file should be included right after
* exrnal_connect.js.
* external_connect.js.
*/
if (typeof createConnectionExternally === 'function') {
// URL params have higher proirity than config params.
let url
= parseURLParams(window.location, true, 'hash')[
'config.externalConnectUrl']
|| config.externalConnectUrl;
let roomName;
if (url && (roomName = getRoomName())) {
url += `?room=${roomName}`;
/**
* Gets the token from the URL.
*/
function buildToken(){
var params = getConfigParamsFromUrl();
return params["config.token"] || config.token;
const token = parseURLParams(window.location, true, 'search').jwt;
if (token) {
url += `&token=${token}`;
}
createConnectionExternally(
url,
connectionInfo => {
// Sets that global variable to be used later by connect method
// in connection.js.
window.XMPPAttachInfo = {
status: 'success',
data: connectionInfo
};
checkForConnectHandlerAndConnect();
},
errorCallback);
} else {
errorCallback();
}
} else {
errorCallback();
}
/**
* Executes createConnectionExternally function.
* Check if connect from connection.js was executed and executes the handler
* that is going to finish the connect work.
*
* @returns {void}
*/
(function () {
// FIXME: Add implementation for changing that config from the url for
// consistency
var url = config.externalConnectUrl;
function checkForConnectHandlerAndConnect() {
window.APP
&& window.APP.connect.status === 'ready'
&& window.APP.connect.handler();
}
/**
* Check if connect from connection.js was executed and executes the handler
* that is going to finish the connect work.
*/
function checkForConnectHandlerAndConnect() {
/**
* Implements a callback to be invoked if anything goes wrong.
*
* @param {Error} error - The specifics of what went wrong.
* @returns {void}
*/
function errorCallback(error) {
// The value of error is undefined if external connect is disabled.
error && console.warn(error);
if(window.APP && window.APP.connect.status === "ready") {
window.APP.connect.handler();
}
}
function error_callback(error){
if(error) //error=undefined if external connect is disabled.
console.warn(error);
// Sets that global variable to be used later by connect method in
// connection.js
window.XMPPAttachInfo = {
status: "error"
};
checkForConnectHandlerAndConnect();
}
if(!url || !window.createConnectionExternally) {
error_callback();
return;
}
var room_name = getRoomName();
if(!room_name) {
error_callback();
return;
}
url += "?room=" + room_name;
var token = buildToken();
if(token)
url += "&token=" + token;
createConnectionExternally(url, function(connectionInfo) {
// Sets that global variable to be used later by connect method in
// connection.js
window.XMPPAttachInfo = {
status: "success",
data: connectionInfo
};
checkForConnectHandlerAndConnect();
}, error_callback);
})();
// Sets that global variable to be used later by connect method in
// connection.js.
window.XMPPAttachInfo = {
status: 'error'
};
checkForConnectHandlerAndConnect();
}

14
css/404.scss Normal file
View File

@@ -0,0 +1,14 @@
.error_page {
width: 60%;
margin: 20% auto;
text-align: center;
h2 {
font-size: 36px;
}
&__message {
font-size: 24px;
margin-top: 20px;
}
}

69
css/_animations.scss Normal file
View File

@@ -0,0 +1,69 @@
/**
* Project animations
**/
/**
* Slide in animation for extended toolbar.
*/
@include keyframes(slideInX) {
0% { transform: translateX(-100%); }
100% { transform: translateX(0%); }
}
@include keyframes(slideOutX) {
0% { transform: translateX(0%); }
100% { transform: translateX(-100%); }
}
@include keyframes(slideInExtX) {
0% { transform: translateX(-500%); }
100% { transform: translateX(0%); }
}
@include keyframes(slideOutExtX) {
0% { transform: translateX(0%); }
100% { transform: translateX(-500%); }
}
/**
* Slide in / out animation for main toolbar.
*/
@include keyframes(slideInY) {
100% { transform: translateY(0%); }
}
@include keyframes(slideOutY) {
0% { transform: translateY(0%); }
100% { transform: translateY(-100%); }
}
/**
* Slide in animation for extended toolbar (inner) panel.
*/
// FIX: Can't use percentage because of breaking animation when width is changed
// (100% of 0 is also zero) Extracted this to config variable.
@include keyframes(slideInExt) {
from { left: -$sidebarWidth; }
to { left: 0; }
}
@include keyframes(slideOutExt) {
from { left: 0; }
to { left: -$sidebarWidth; }
}
/**
* Slide in animation for extended toolbar container
**/
@include keyframes(slideOutExtContainer) {
from { width: $sidebarWidth; }
to { width: 0; }
}
@include keyframes(slideInExtContainer) {
from { width: 0; }
to { width: $sidebarWidth; }
}

172
css/_base.scss Normal file
View File

@@ -0,0 +1,172 @@
/**
* Safari will limit input in input elements to one character when user-select
* none is applied. Other browsers already support selecting within inputs while
* user-select is none. As such, disallow user-select except on inputs.
*/
*:not(input) {
-webkit-user-select: none;
user-select: none;
}
body {
margin: 0px;
width: 100%;
height: 100%;
font-size: 12px;
font-weight: 400;
overflow: hidden;
color: $defaultColor;
background: $defaultBackground;
&.filmstrip-only {
background: transparent;
}
}
p {
margin: 0;
}
body, input, textarea, keygen, select, button {
font-family: $baseFontFamily !important;
}
#nowebrtc {
display:none;
}
.no-fa-video-camera, .fa-microphone-slash {
color: #636363;
}
button, input, select, textarea {
margin: 0;
vertical-align: baseline;
font-size: 1em;
}
button, select, input[type="button"],
input[type="reset"], input[type="submit"] {
cursor: pointer;
}
textarea {
overflow: hidden;
word-wrap: break-word;
resize: none;
line-height: 1.5em;
}
input[type='text'], input[type='password'], textarea {
outline: none; /* removes the default outline */
resize: none; /* prevents the user-resizing, adjust to taste */
}
button {
color: #FFF;
background-color: $buttonBackground;
border-radius: $borderRadius;
&.no-icon {
padding: 0 1em;
}
}
button,
form {
display: block;
}
.watermark {
display: block;
position: absolute;
top: 15;
width: 186px;
height: 74px;
background-size: contain;
background-repeat: no-repeat;
z-index: $zindex2;
}
.leftwatermark {
left: $defaultToolbarSize;
margin-left: 10px;
background-image: url($defaultWatermarkLink);
background-position: center left;
}
.rightwatermark {
right: 15;
background-position: center right;
}
.poweredby {
position: absolute;
left: 25;
bottom: 7;
font-size: 11pt;
color: rgba(255,255,255,.50);
text-decoration: none;
z-index: $poweredByZ;
}
.connected {
color: #21B9FC;
font-size: 12px;
}
.lastN, .disconnected {
color: #a3a3a3;
font-size: 12px;
}
/**
* Tooltips
**/
.tipsy {
z-index: $tooltipsZ;
&-inner {
background-color: $tooltipBg;
max-width: 350px;
}
&-arrow {
border-color: $tooltipBg;
}
}
/**
* Dialogs fade
*/
.aui-blanket {
visibility: visible;
}
#inviteLinkRef {
-webkit-user-select: text;
user-select: text;
}
/**
* Re-style default OS scrollbar.
*/
::-webkit-scrollbar {
background: transparent;
width: 7px;
}
::-webkit-scrollbar-button {
display: none;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-track-piece {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, .5);
border-radius: 4px;
}

View File

@@ -1,10 +1,4 @@
#chatspace {
display: none;
background-color: black;
border-left: 1px solid #424242;
}
#chatspace * {
#chat_container * {
-webkit-user-select: text;
user-select: text;
}
@@ -19,11 +13,49 @@
font-size: 10pt;
width: 100%;
height: 90%;
overflow-y: scroll;
overflow-x: hidden;
overflow: auto;
word-wrap: break-word;
a:link {
color: rgb(184, 184, 184);
}
a:visited {
color: white;
}
a:hover {
color: rgb(213, 213, 213);
}
a:active {
color: black;
}
&::-webkit-scrollbar {
background: #06a5df;
width: 7px;
}
&::-webkit-scrollbar-button {
display: none;
}
&::-webkit-scrollbar-track {
background: black;
}
&::-webkit-scrollbar-track-piece {
background: black;
}
&::-webkit-scrollbar-thumb {
background: #06a5df;
border-radius: 4px;
}
}
#chatspace.is-conversation-mode #chatconversation {
#chat_container.is-conversation-mode #chatconversation {
visibility: visible;
}
@@ -65,7 +97,7 @@
box-shadow: none;
}
#chatspace.is-conversation-mode #usermsg {
#chat_container.is-conversation-mode #usermsg {
visibility: visible;
}
@@ -80,7 +112,7 @@
width: 95%;
}
#chatspace.is-conversation-mode #nickname {
#chat_container.is-conversation-mode #nickname {
visibility: hidden;
}
@@ -93,31 +125,23 @@
color: #a7a7a7;
}
#unreadMessages {
font-size: 8px;
position: absolute;
}
#bottomUnreadMessages {
top: 5px;
left: 10px;
position: absolute;
font-size: 8px;
}
#chatspace .username {
#chat_container .username {
float: left;
padding-left: 5px;
font-weight: bold;
white-space: nowrap;
text-overflow: ellipsis;
width: 95%;
overflow: hidden;
}
#chatspace .timestamp {
#chat_container .timestamp {
float: right;
padding-right: 5px;
font-size: 11px;
}
#chatspace .usermessage {
#chat_container .usermessage {
padding-top: 20px;
padding-left: 5px;
}
@@ -131,7 +155,7 @@
.chatmessage {
background: #3a3a3a;
width: 93%;
margin-left: 5%;
margin-left: 9px;
margin-right: auto;
border-radius: 5px;
border-top-left-radius: 0px;
@@ -178,7 +202,7 @@
visibility: hidden;
}
#chatspace.is-conversation-mode #smileysarea {
#chat_container.is-conversation-mode #smileysarea {
visibility: visible;
}
@@ -210,44 +234,6 @@
line-height: 30px;
}
::-webkit-scrollbar {
background: #06a5df;
width: 7px;
}
::-webkit-scrollbar-button {
display: none;
}
::-webkit-scrollbar-track {
background: black;
}
::-webkit-scrollbar-track-piece {
background: black;
}
::-webkit-scrollbar-thumb {
background: #06a5df;
border-radius: 4px;
}
#usermsg::-webkit-scrollbar-track-piece {
background: #3a3a3a;
}
a:link {
color: rgb(184, 184, 184);
}
a:visited {
color: white;
}
a:hover {
color: rgb(213, 213, 213);
}
a:active {
color: black;
}

43
css/_connection-info.scss Normal file
View File

@@ -0,0 +1,43 @@
%connection-info {
text-align: left;
font-size: 12px;
font-weight: 400;
color: $popoverFontColor;
td {
padding: 2px 0;
}
}
.connection-info
{
float: left;
padding: 5px;
padding-left: 0;
@extend %connection-info;
> table {
white-space: nowrap;
@extend %connection-info;
}
td:nth-child(n-1) {
padding-left: 5px;
}
&__icon {
margin-right: 2px;
}
&__download
{
@extend .connection-info__icon;
color: $downloadConnectionIconColor;
}
&__upload
{
@extend .connection-info__icon;
color: $uploadConnectionIconColor;
}
}

61
css/_contact_list.scss Normal file
View File

@@ -0,0 +1,61 @@
#contacts_container {
cursor: default;
> ul#contacts {
font-size: 12px;
bottom: 0px;
margin: 0;
margin-top: 12px;
padding: 0px;
width: 100%;
}
.clickable {
cursor: pointer;
}
.icon-security,
.icon-security-locked {
font-size: 16px;
}
}
#contacts {
>li {
display: block;
list-style-type: none;
text-align: left;
white-space: nowrap;
color: $baseLight;
font-size: 16px;
padding: 0 10%;
height: 27px;
&:hover,
&:active {
background: $toolbarSelectBackground;
}
> p {
display: inline-block;
vertical-align: middle;
margin: 0px;
width: 100%;
line-height: 1.5em;
text-overflow: ellipsis;
overflow: hidden;
}
}
}
.avatar {
padding: 0px;
margin-right: 10px;
vertical-align: middle;
font-size: 22pt;
border-radius: 20px;
max-height: 30px;
max-width: 30px;
}

81
css/_dial-out.scss Normal file
View File

@@ -0,0 +1,81 @@
/**
* The dialog content element.
*/
.dial-out-content {
margin-top: 5px;
/**
* Wrap the contents in flex so items can be aligned on the same line.
*/
.form-control {
display: flex;
}
/**
* The style of the flag icon.
*/
.dial-out-flag-icon {
position: absolute;
left: 5px;
top: 50%;
transform: translate(0, -50%);
}
/**
* The style of the dial code element.
*/
.dial-out-code {
margin-bottom: 0;
padding-left: 25px;
}
/**
* The dial-out dialog error element.
*/
.dial-out-error {
color: $errorColor;
}
/**
* The style of the dial input element.
*/
.dial-out-input {
display: inline-block;
flex: 1;
margin-left: 5px;
}
/**
* Re-styling the default dropdown inside the dial-out-content.
*/
.dropdown {
position: relative;
width: 65px;
}
/**
* Re-styling the default form-control inside the dial-out-content.
*/
.form-control {
margin-bottom: 8px;
}
.dropdown {
position: relative;
input {
padding-left: 16px;
&:read-only {
color: inherit;
}
}
}
.dropdown-trigger-icon {
position: absolute;
right: 0;
top: 50%;
transform: translate(0, -50%);
}
}

148
css/_filmstrip.scss Normal file
View File

@@ -0,0 +1,148 @@
%align-right {
@include flex();
flex-direction: row-reverse;
flex-wrap: nowrap;
justify-content: flex-start;
}
.filmstrip {
position: absolute;
bottom: 0;
right: 0;
padding: 10px 5px;
@extend %align-right;
&__toolbar {
@include flex();
flex-direction: column-reverse;
flex-wrap: nowrap;
position: relative;
z-index: $zindex1; // Set z-index to make element visible.
width: $filmstripToggleButtonWidth;
button {
font-size: 14px;
line-height: 1.2;
text-align: center;
background: transparent;
opacity: 0.7;
height: auto;
width: 100%;
padding: 0;
margin: 0;
border: none;
outline: none;
-webkit-appearance: none;
&:hover {
opacity: 1;
}
i {
cursor: pointer;
}
}
}
&__videos {
@extend %align-right;
position:relative;
height:196px;
padding: 0;
/* The filmstrip should not be covered by the left toolbar. */
bottom: 0;
width:auto;
z-index: $filmstripVideosZ;
transition: bottom 2s;
overflow: visible !important;
/*!!! Removes the gap between the local video container and the remote
videos. */
font-size: 0pt;
&#remoteVideos {
border: $thumbnailsBorder solid transparent;
padding-left: $defaultToolbarSize + 5;
}
&.hidden {
bottom: -196px;
}
.remote-videos-container {
display: flex;
}
.videocontainer {
display: none;
position: relative;
background-size: contain;
border: $thumbnailVideoBorder solid transparent;
border-radius: $borderRadius;
margin: 0 $thumbnailVideoMargin;
&.videoContainerFocused, &:hover {
cursor: hand;
}
/**
* Focused video thumbnail.
*/
&.videoContainerFocused {
transition-duration: 0.5s;
-webkit-transition-duration: 0.5s;
-webkit-animation-name: greyPulse;
-webkit-animation-duration: 2s;
-webkit-animation-iteration-count: 1;
border: $thumbnailVideoBorder solid $videoThumbnailSelected !important;
box-shadow: inset 0 0 3px $videoThumbnailSelected,
0 0 3px $videoThumbnailSelected !important;
}
.remotevideomenu > .icon-menu {
display: none;
}
/**
* Hovered video thumbnail.
*/
&:hover {
cursor: hand;
border: $thumbnailVideoBorder solid $videoThumbnailHovered;
box-shadow: inset 0 0 3px $videoThumbnailHovered,
0 0 3px $videoThumbnailHovered;
.remotevideomenu > .icon-menu {
display: inline-block;
}
}
/* With the TemasysWebRTC plugin <object/> element is used
instead of <video/> */
& > video,
& > object {
cursor: hand;
border-radius: $borderRadius;
object-fit: cover;
overflow: hidden;
}
}
}
/**
* Style the filmstrip videos in filmstrip-only mode.
*/
&__videos-filmstripOnly {
margin-top: auto;
margin-bottom: auto;
}
.remote-videos-container {
transition: opacity 1s;
&.hide-videos {
opacity: 0;
pointer-events: none;
}
}
}

35
css/_flag-icon.scss Executable file
View File

@@ -0,0 +1,35 @@
.flag-icon-background {
background-size: contain;
background-position: 50%;
background-repeat: no-repeat;
}
.flag-icon {
background-size: contain;
background-position: 50%;
background-repeat: no-repeat;
position: relative;
display: inline-block;
width: 1.33333333em;
line-height: 1em;
}
.flag-icon:before {
content: "\00a0";
}
.flag-icon-au {
background-image: url(../images/countries/au.svg);
}
.flag-icon-ca {
background-image: url(../images/countries/ca.svg);
}
.flag-icon-de {
background-image: url(../images/countries/de.svg);
}
.flag-icon-gb {
background-image: url(../images/countries/gb.svg);
}
.flag-icon-fr {
background-image: url(../images/countries/fr.svg);
}
.flag-icon-us {
background-image: url(../images/countries/us.svg);
}

View File

@@ -255,9 +255,6 @@
.fa-road:before {
content: "\f018";
}
.fa-download:before {
content: "\f019";
}
.fa-arrow-circle-o-down:before {
content: "\f01a";
}
@@ -842,9 +839,6 @@
.fa-exchange:before {
content: "\f0ec";
}
.fa-cloud-download:before {
content: "\f0ed";
}
.fa-cloud-upload:before {
content: "\f0ee";
}

159
css/_font.scss Normal file
View File

@@ -0,0 +1,159 @@
@font-face {
font-family: 'jitsi';
src:url('../fonts/jitsi.eot?94d075');
src:url('../fonts/jitsi.eot?#iefix94d075') format('embedded-opentype'),
url('../fonts/jitsi.woff?94d075') format('woff'),
url('../fonts/jitsi.ttf?94d075') format('truetype'),
url('../fonts/jitsi.svg?94d075#jitsi') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
font-family: 'jitsi';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1.22em;
font-size: 1.22em;
cursor: default;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-thumb-menu:before {
content: "\e5d4";
}
.icon-mic-camera-combined:before {
content: "\e903";
}
.icon-feedback:before {
content: "\e91d";
}
.icon-toggle-filmstrip:before {
content: "\e91c";
}
.icon-avatar:before {
content: "\e901";
}
.icon-hangup:before {
content: "\e905";
}
.icon-chat:before {
content: "\e906";
}
.icon-download:before {
content: "\e902";
}
.icon-edit:before {
content: "\e907";
}
.icon-share-doc:before {
content: "\e908";
}
.icon-kick:before {
content: "\e904";
}
.icon-menu-up:before {
content: "\e91f";
}
.icon-menu-down:before {
content: "\e920";
}
.icon-full-screen:before {
content: "\e90b";
}
.icon-exit-full-screen:before {
content: "\e90c";
}
.icon-star-full:before {
content: "\e90a";
}
.icon-security:before {
content: "\e90d";
}
.icon-security-locked:before {
content: "\e90e";
}
.icon-reload:before {
content: "\e90f";
}
.icon-microphone:before {
content: "\e910";
}
.icon-mic-empty:before {
content: "\e911";
}
.icon-mic-disabled:before {
content: "\e912";
}
.icon-ninja:before {
content: "\e909";
}
.icon-raised-hand:before {
content: "\e91e";
}
.icon-contactList:before {
content: "\e91b";
}
.icon-link:before {
content: "\e913";
}
.icon-shared-video:before {
content: "\e914";
}
.icon-settings:before {
content: "\e915";
}
.icon-star:before {
content: "\e916";
}
.icon-switch-camera:before {
content: "\e921";
}
.icon-share-desktop:before {
content: "\e917";
}
.icon-camera:before {
content: "\e918";
}
.icon-camera-disabled:before {
content: "\e919";
}
.icon-volume:before {
content: "\e91a";
}
.icon-connection-lost:before {
content: "\e900";
}
.icon-connection:before {
content: "\e61a";
}
.icon-recDisable:before {
content: "\e613";
}
.icon-recEnable:before {
content: "\e614";
}
.icon-presentation:before {
content: "\e603";
}
.icon-dialpad:before {
content: "\e925";
}
.icon-visibility:before {
content: "\e923";
}
.icon-visibility-off:before {
content: "\e924";
}
.icon-telephone:before {
content: "\e0cd";
}
.icon-add:before {
content: "\e145";
}

6
css/_functions.scss Normal file
View File

@@ -0,0 +1,6 @@
/* Functions */
/* Pixels to Ems function */
@function em($value, $base: 16) {
@return #{$value / $base}em;
}

113
css/_inlay.scss Normal file
View File

@@ -0,0 +1,113 @@
.inlay {
margin-top: 14%;
@include border-radius(4px);
padding: 40px 38px 44px;
color: #fff;
background: $inlayColorBg;
text-align: center;
&__title {
margin: 17px 0;
padding-bottom: 17px;
color: $popoverFontColor;
font-size: 21px;
letter-spacing: 0.3px;
border-bottom: 1px solid $inlayBorderColor;
}
&__text {
color: $popoverFontColor;
display: block;
margin-top: 22px;
font-size: 16px;
}
&__icon {
margin: 0 10px;
font-size: 50px;
}
&-filmstrip-only {
background-color: $inlayFilmstripOnlyBg;
color: $inlayFilmstripOnlyColor;
margin-left: 20px;
margin-right: 20px;
margin-top: 20px;
bottom: 30px;
position: absolute;
display: flex;
max-height: 120px;
height: 80%;
right: 0px;
border-radius: 4px;
overflow: hidden;
&__content {
padding: 20px;
display: flex;
justify-content: center;
position: relative;
> .button-control {
align-self: center;
}
> #reloadProgressBar {
position: absolute;
left: 0px;
bottom: 0px;
margin-bottom: 0px;
width: 100%;
border-radius: 0px;
> .aui-progress-indicator-value {
border-radius: 0px;
}
}
}
&__title {
font-size: 18px;
font-weight: 600;
}
&__container {
align-self: center;
}
&__text {
margin-top: 10px;
font-size: 14px;
font-weight: 600;
}
&__icon {
font-size: 50px;
align-self: center;
color: $inlayIconColor;
opacity: 0.6;
}
&__icon-container {
text-align: center;
display: flex;
justify-content: center;
position: absolute;
width: 100%;
height: 100%;
top: 0px;
}
&__avatar-container {
height: 100%;
position: relative;
> img {
height: 100%;
}
}
&__icon-background {
background: $inlayIconBg;
opacity: 0.6;
position: absolute;
width: 100%;
height: 100%;
top: 0px;
}
}
}

92
css/_jitsi_popover.scss Normal file
View File

@@ -0,0 +1,92 @@
.jitsipopover {
position: absolute;
top: 0;
left: 0;
z-index: $jitsipopoverZ;
display: table;
visibility: hidden;
max-width: 300px;
min-width: 100px;
text-align: left;
color: $popoverFontColor;
background-color: $popoverBg;
background-clip: padding-box;
border-radius: $borderRadius;
/*-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);*/
/*box-shadow: 0 5px 10px rgba(0, 0, 0, 0.4);*/
white-space: normal;
margin-top: -$popoverMenuPadding;
&__menu-padding,
&__menu-padding-top {
position: absolute;
width: 100px;
}
/**
* Invisible padding is added to the bottom of the popover to extend its
* height so it does not close when moving the mouse from the trigger
* element towards the popover itself.
*/
&__menu-padding {
bottom: -$popoverMenuPadding;
height: $popoverMenuPadding;
}
/**
* Invisible padding is added to the top of the popover to extend its height
* so it does not close automatically when its height is shrunk from showing
* less video statistics.
*/
&__menu-padding-top {
height: 20px;
top: -20px;
}
&__showmore {
display: block;
text-align: center;
width: 90px;
margin: 10px auto;
}
> .arrow {
position: absolute;
display: block;
left: 50%;
bottom: -5px;
margin-left: -5px;
width: 0;
height: 0;
border-color: transparent;
border-top-color: $popoverBg;
border-style: solid;
border-width: 5px;
border-bottom-width: 0;
}
/**
* Override default "top" styles to support popovers appearing from the
* left of the popover trigger element.
*/
&.left {
margin-left: -$popoverMenuPadding;
margin-top: 0;
.arrow {
border-color: transparent transparent transparent $popoverBg;
border-width: 5px 0px 5px 5px;
margin-left: 0;
margin-top: -5px;
}
.jitsipopover {
&__menu-padding {
bottom: 0;
height: 100%;
width: $popoverMenuPadding;
}
}
}
}

View File

@@ -9,7 +9,8 @@
}
div.jqi{
width: 400px;
position: absolute;
position: absolute;
color: #3a3a3a;
background-color: #ffffff;
font-size: 11px;
text-align: left;
@@ -55,7 +56,7 @@ div.jqi .jqibuttons{
div.jqi .jqibuttons button{
margin: 0;
padding: 5px 20px;
background-color: transparent;
background-color: transparent !important;
font-weight: normal;
border: none;
border-left: solid 1px #e4e4e4;

View File

@@ -0,0 +1,206 @@
@charset "UTF-8";
/*!
* jQuery contextMenu - Plugin for simple contextMenu handling
*
* Version: v2.1.1
*
* Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)
* Web: http://swisnl.github.io/jQuery-contextMenu/
*
* Copyright (c) 2011-2016 SWIS BV and contributors
*
* Licensed under
* MIT License http://www.opensource.org/licenses/mit-license
*
* Date: 2016-02-28T09:53:18.890Z
*/
@font-face {
font-family: "context-menu-icons";
font-style: normal;
font-weight: normal;
src: url("font/context-menu-icons.eot?2qmzf");
src: url("font/context-menu-icons.eot?2qmzf#iefix") format("embedded-opentype"), url("font/context-menu-icons.woff2?2qmzf") format("woff2"), url("font/context-menu-icons.woff?2qmzf") format("woff"), url("font/context-menu-icons.ttf?2qmzf") format("truetype");
}
.context-menu-icon:before {
position: absolute;
top: 50%;
left: 0;
width: 28px;
font-family: "context-menu-icons";
font-size: 16px;
font-style: normal;
font-weight: normal;
line-height: 1;
color: #2980b9;
text-align: center;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.context-menu-icon-add:before {
content: "";
}
.context-menu-icon-copy:before {
content: "";
}
.context-menu-icon-cut:before {
content: "";
}
.context-menu-icon-delete:before {
content: "";
}
.context-menu-icon-edit:before {
content: "";
}
.context-menu-icon-paste:before {
content: "";
}
.context-menu-icon-quit:before {
content: "";
}
.context-menu-icon.context-menu-hover:before {
color: #fff;
}
.context-menu-list {
position: absolute;
display: inline-block;
min-width: 180px;
max-width: 360px;
padding: 4px 0;
margin: 5px;
font-family: inherit;
font-size: inherit;
list-style-type: none;
background: #fff;
border: 1px solid #bebebe;
border-radius: $borderRadius;
-webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, .5);
box-shadow: 0 2px 5px rgba(0, 0, 0, .5);
}
.context-menu-item {
position: relative;
padding: 3px 28px;
color: #2f2f2f;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: #fff;
}
.context-menu-separator {
padding: 0;
margin: 5px 0;
border-bottom: 1px solid #e6e6e6;
}
.context-menu-item > label > input,
.context-menu-item > label > textarea {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.context-menu-item.context-menu-hover {
color: #fff;
cursor: pointer;
background-color: #2980b9;
}
.context-menu-item.context-menu-disabled {
color: #626262;
background-color: #fff;
}
.context-menu-item.context-menu-disabled {
color: #626262;
}
.context-menu-input.context-menu-hover,
.context-menu-item.context-menu-disabled.context-menu-hover {
cursor: default;
background-color: #eee;
}
.context-menu-submenu:after {
position: absolute;
top: 50%;
right: 8px;
z-index: $zindex1;
width: 0;
height: 0;
content: '';
border-color: transparent transparent transparent #2f2f2f;
border-style: solid;
border-width: 4px 0 4px 4px;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
}
/**
* Inputs
*/
.context-menu-item.context-menu-input {
padding: 5px 10px;
}
/* vertically align inside labels */
.context-menu-input > label > * {
vertical-align: top;
}
/* position checkboxes and radios as icons */
.context-menu-input > label > input[type="checkbox"],
.context-menu-input > label > input[type="radio"] {
position: relative;
top: 3px;
}
.context-menu-input > label,
.context-menu-input > label > input[type="text"],
.context-menu-input > label > textarea,
.context-menu-input > label > select {
display: block;
width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.context-menu-input > label > textarea {
height: 100px;
}
.context-menu-item > .context-menu-list {
top: 5px;
/* re-positioned by js */
right: -5px;
display: none;
}
.context-menu-item.context-menu-visible > .context-menu-list {
display: block;
}
.context-menu-accesskey {
text-decoration: underline;
}

View File

@@ -0,0 +1,25 @@
#keyboard-shortcuts {
display: none;
position: absolute;
bottom: 20px;
left: $defaultToolbarSize;
overflow: hidden;
padding: 20px;
margin-left: 10px;
z-index: $zindex10;
border-radius: $borderRadius;
background-attachment: scroll;
background-size: auto auto;
color: rgba(255, 255, 255, .8);
background-color: rgba(0, 0, 0, .8);
}
#keyboard-shortcuts .item-action {
color: #209EFF;
font-size: 14pt;
padding-right: 5px;
}
#keyboard-shortcuts-list {
list-style-type: none;
}

18
css/_login_menu.scss Normal file
View File

@@ -0,0 +1,18 @@
/*Initialize*/
div.loginmenu {
position: absolute;
margin: 0;
padding: 5px;
top: 40px;
left: 20px;
}
a.disabled {
color: gray !important;
pointer-events: none;
}
.loginmenu.extendedToolbarPopup {
top: 20px;
left: 40px;
}

195
css/_mixins.scss Normal file
View File

@@ -0,0 +1,195 @@
/**
* Animation mixin.
*/
@mixin animation($animate...) {
$max: length($animate);
$animations: '';
@for $i from 1 through $max {
$animations: #{$animations + nth($animate, $i)};
@if $i < $max {
$animations: #{$animations + ", "};
}
}
-webkit-animation: $animations;
-moz-animation: $animations;
-o-animation: $animations;
animation: $animations;
}
@mixin flex() {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
/**
* Keyframes mixin.
*/
@mixin keyframes($animationName) {
@-webkit-keyframes #{$animationName} {
@content;
}
@-moz-keyframes #{$animationName} {
@content;
}
@-o-keyframes #{$animationName} {
@content;
}
@keyframes #{$animationName} {
@content;
}
}
@mixin circle($diameter) {
width: $diameter;
height: $diameter;
border-radius: 50%;
}
/**
* Absolute position the element at the top left corner
**/
@mixin topLeft() {
position: absolute;
top: 0;
left: 0;
}
@mixin absoluteAligning() {
top: 50%;
left: 50%;
position: absolute;
@include transform(translate(-50%, -50%));
}
/**
* Defines the maximum width and height
**/
@mixin maxSize($value) {
max-width: $value;
max-height: $value;
}
@mixin transform($func) {
-moz-transform: $func;
-ms-transform: $func;
-webkit-transform: $func;
-o-transform: $func;
transform: $func;
}
@mixin transition($transition...) {
-moz-transition: $transition;
-o-transition: $transition;
-webkit-transition: $transition;
transition: $transition;
}
/**
* Mixin styling a placeholder.
**/
@mixin placeholder() {
$selectors: (
"::-webkit-input-placeholder",
"::-moz-placeholder",
":-moz-placeholder",
":-ms-input-placeholder"
);
@each $selector in $selectors {
#{$selector} {
@content;
}
}
}
/**
* Mixin styling a slider track for different browsers.
**/
@mixin slider() {
$selectors: (
"input[type=range]::-webkit-slider-runnable-track",
"input[type=range]::-moz-range-track",
"input[type=range]::-ms-track"
);
@each $selector in $selectors {
#{$selector} {
@content;
}
}
}
/**
* Mixin styling a slider thumb for different browsers.
**/
@mixin slider-thumb() {
$selectors: (
"input[type=range]::-webkit-slider-thumb",
"input[type=range]::-moz-range-thumb",
"input[type=range]::-ms-thumb"
);
@each $selector in $selectors {
#{$selector} {
@content;
}
}
}
@mixin box-shadow($h, $y, $blur, $color, $inset: false) {
@if $inset {
-webkit-box-shadow: inset $h $y $blur $color;
-moz-box-shadow: inset $h $y $blur $color;
box-shadow: inset $h $y $blur $color;
} @else {
-webkit-box-shadow: $h $y $blur $color;
-moz-box-shadow: $h $y $blur $color;
box-shadow: $h $y $blur $color;
}
}
@mixin no-box-shadow {
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
@mixin box-sizing($box-model) {
-webkit-box-sizing: $box-model; // Safari <= 5
-moz-box-sizing: $box-model; // Firefox <= 19
box-sizing: $box-model;
}
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
border-radius: $radius;
/* stops bg color from leaking outside the border: */
background-clip: padding-box;
}
@mixin opacity($opacity) {
opacity: $opacity;
$opacity-ie: $opacity * 100;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=$opacity-ie);
filter: alpha(opacity=$opacity-ie); //IE8
}
@mixin text-truncate {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/**
* Creates a semi-transparent background with the given color and alpha
* (opacity) value.
*/
@mixin transparentBg($color, $alpha) {
background-color: rgba(red($color), green($color), blue($color), $alpha);
}

View File

@@ -19,11 +19,6 @@
width: 100%;
}
.jqibuttons button {
margin-right: 5px;
float:right;
}
button.jqidefaultbutton #inviteLinkRef {
color: #2c8ad2;
}

15
css/_notice.scss Normal file
View File

@@ -0,0 +1,15 @@
.notice {
position: absolute;
left: 50%;
z-index: $zindex3;
margin-top: 6px;
@include transform(translateX(-50%));
&__message {
background-color: #000000;
color: white;
padding: 3px;
border-radius: 5px;
}
}

15
css/_policy.scss Normal file
View File

@@ -0,0 +1,15 @@
.policy {
&__logo {
display: block;
width: 200px;
height: 50px;
margin: 30px auto 0;
}
&__text {
text-align: center;
font-size: 14px;
line-height: 21px;
font-weight: 300;
}
}

View File

@@ -2,7 +2,7 @@
position: absolute;
top: 0;
left: 0;
z-index: 1010;
z-index: $popoverZ;
display: none;
max-width: 300px;
min-width: 100px;
@@ -121,4 +121,4 @@
border-right-width: 0;
border-left-color: #ffffff;
bottom: -10px;
}
}

95
css/_popup_menu.scss Normal file
View File

@@ -0,0 +1,95 @@
/**
* Initialize
**/
.popupmenu {
padding: 0;
margin: 2px 0;
bottom: 0;
height: auto;
&:first-child {
margin-top: 2px;
}
&__item {
list-style-type: none;
text-align: left;
height: 35px;
&:hover {
background-color: $popupMenuSelectedItemBackground;
}
}
// Link Appearance
&__link,
&__contents {
display: block;
box-sizing: border-box;
text-decoration: none;
color: #fff;
padding: 5px;
height: 100%;
font-size: 9pt;
width: 100%;
cursor: hand;
&.disabled {
color: gray !important;
pointer-events: none;
}
}
&__text {
display: inline-block;
vertical-align: middle;
}
&__contents {
display: flex;
/**
* Positioning styles on the slider and its container are used to make
* the container fit the popup width, by removing the slider from the
* page flow, and then making the slider fit the container.
*/
.popupmenu__slider_container {
position: relative;
width: 100%;
.popupmenu__slider {
position: absolute;
top: 50%;
transform: translate(0, -50%);
width: 100%;
}
}
}
&__icon {
vertical-align: middle;
position: relative;
display: inline-block;
min-width: 20px;
height: 100%;
text-align: center;
> * {
@include absoluteAligning();
}
}
.icon-kick {
font-size: 8pt;
}
}
span.remotevideomenu:hover ul.popupmenu, ul.popupmenu:hover {
display:block !important;
}
.remote-control-spinner {
top: 6px;
left: 2px;
}

4
css/_recording.scss Normal file
View File

@@ -0,0 +1,4 @@
.recordingSpinner {
display: none;
vertical-align: top;
}

34
css/_redirect_page.scss Normal file
View File

@@ -0,0 +1,34 @@
.redirectPageMessage {
width: 30%;
margin: 20% auto;
text-align: center;
font-size: 24px;
.thanks-msg {
border-bottom: 1px solid $selectBg;
padding-left: 30px;
padding-right: 30px;
p {
margin: 30px auto;
font-size: 24px;
line-height: 24px;
}
}
.hint-msg{
p {
margin: 26px auto;
font-weight: 600;
font-size: 16px;
line-height: 18px;
.hint-msg__holder{
font-weight: 200;
}
}
.happy-software{
width: 120px;
height: 86px;
margin: 0 auto;
background: $happySoftwareBackground;
}
}
}

View File

@@ -0,0 +1,146 @@
/**
* Toolbar side panel main container element.
*/
#sideToolbarContainer {
background-color: $sideToolbarContainerBg;
height: 100%;
left: $defaultToolbarSize;
max-width: $sidebarWidth;
overflow: hidden;
position: absolute;
top: 0;
width: 0;
z-index: $sideToolbarContainerZ;
/**
* Labels inside the side panel.
*/
label {
color: $baseLight;
}
/**
* Form elements and blocks.
*/
input, select, a,
.sideToolbarBlock, .form-control, .button-control {
display: block;
margin-top: 15px;
margin-left: 10%;
width: 80%;
}
/**
* Specify styling of elements inside a block.
*/
.sideToolbarBlock {
input, button, a, select {
margin-left: 0;
margin-top: 5px;
width: 100%;
}
input[type='checkbox'] {
display: inline;
width: auto !important;
> label {
margin-top: 5px;
width: 80%;
}
}
}
/**
* Inner container, for example contact list, settings or profile.
*/
.sideToolbarContainer__inner {
display: none;
height: 100%;
width: $sidebarWidth;
position: absolute;
box-sizing: border-box;
color: #FFF;
.input-control {
border: 0;
}
/**
* Titles and subtitles of inner containers.
*/
div.title, div.subTitle {
margin: 24px 0 11px;
}
/**
* Main title size.
*/
div.title {
color: $toolbarTitleColor;
text-align: center;
font-size: $toolbarTitleFontSize;
}
/**
* Subtitle specific properties.
*/
div.subTitle {
color: $defaultSideBarFontColor !important;
font-size: 11px;
font-weight: 500;
margin-left: 10%;
text-align: left;
}
/**
* First element after a title.
*/
.first {
margin-top: 0 !important;
}
/**
* Buttons in the side toolbar container.
*/
.button-control {
margin: 9px 0;
width: 100%;
}
}
}
#device_settings {
width : auto !important;
text-align: center;
}
#deviceOptionsWrapper {
button {
float: none;
}
}
/**
* Profile
*/
.auth_container {
ul {
padding: 0;
li {
list-style-type: none;
a.authButton {
width: 160px;
margin: 10px 20px;
padding: 3px 29px;
box-sizing: border-box;
background-color: #06a5df;
border-radius: 4px;
cursor: pointer;
color: $defaultColor;
text-decoration: none;
text-align: center;
}
}
}
}

371
css/_toolbars.scss Normal file
View File

@@ -0,0 +1,371 @@
/**
* Round badge.
*/
.badge-round {
background-color: $toolbarBadgeBackground;
border-radius: 50%;
box-sizing: border-box;
color: $toolbarBadgeColor;
// Do not inherit the font-family from the toolbar button, because it's an
// icon style.
font-family: $baseFontFamily;
font-size: 9px;
font-weight: 700;
line-height: 13px;
min-width: 13px;
overflow: hidden;
text-align: center;
text-overflow: ellipsis;
vertical-align: middle;
}
.toolbar-container {
display: block;
left:0;
min-height: 100px;
opacity: 0;
pointer-events: none;
position: absolute;
right:0;
text-align: center;
top:0;
z-index: $toolbarZ;
}
/**
* Common toolbar styles.
*/
.toolbar {
color: $modalTextColor;
height: 100%;
pointer-events: auto;
position: relative;
z-index: $toolbarZ;
/**
* Toolbar button styles.
*/
.button {
color: $toolbarButtonColor;
cursor: pointer;
z-index: $zindex1;
display: inline-block;
font-size: $toolbarFontSize;
height: $defaultToolbarSize;
line-height: $defaultToolbarSize;
position: relative;
text-align: center;
top:0px;
vertical-align: middle;
width: $defaultToolbarSize;
&_hangup {
color: $hangupColor;
font-size: $hangupFontSize;
}
&[disabled] {
opacity: 0.5;
}
&:hover, &:active {
cursor: pointer;
text-decoration: none;
}
&:not(.toggled) {
&:hover, &:active {
// sum opacity with background layer should give us 0.8
background: $toolbarSelectBackground;
}
}
&.toggled {
background: $toolbarToggleBackground;
&.icon-camera {
@extend .icon-camera-disabled;
}
&.icon-full-screen {
@extend .icon-exit-full-screen;
}
&.icon-microphone {
@extend .icon-mic-disabled;
}
&.icon-visibility {
@extend .icon-visibility-off;
}
}
&.unclickable {
cursor: default;
&:hover, &:active, &.selected {
background: none;
cursor: default;
}
}
}
/**
* Primary toolbar styles.
*/
&_primary {
background-color: $toolbarBackground;
position: absolute;
left: 50%;
top: 30px;
display: inline-block;
width: auto;
height: $defaultToolbarSize;
border-radius: 3px;
opacity: 0;
@include transform(translateX(-50%));
.button:first-child {
border-bottom-left-radius: 3px;
border-top-left-radius: 3px;
}
.button:last-child {
border-bottom-right-radius: 3px;
border-top-right-radius: 3px;
}
}
&_primary a.button:last-child::after {
content: none;
}
/**
* Secondary toolbar styles.
*/
&_secondary {
background-color: $secondaryToolbarBg;
position: absolute;
align-items: center;
box-sizing: border-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-box;
display: -webkit-flex;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
height: 100%;
justify-content: flex-start;
left: 0;
padding-top: 10px;
top: 0;
transform: translateX(-100%);
width: $defaultToolbarSize;
-webkit-transform: translateX(-100%);
.button {
font-size: $secToolbarFontSize;
height: $secToolbarLineHeight;
line-height: $secToolbarLineHeight;
}
.button.toggled:not(.icon-raised-hand):not(.button-active) {
background: $secondaryToolbarBg;
cursor: pointer;
text-decoration: none;
&.unclickable {
cursor: default;
&:hover, &:active, &.selected {
background: none;
cursor: default;
}
}
}
}
/**
* Styles the toolbar in filmstrip-only mode.
*/
&_filmstrip-only {
border-radius: 3px;
display: inline-block;
height: auto;
width: $defaultFilmStripOnlyToolbarSize;
.button {
height: 37px;
line-height: 37px !important;
width: 37px;
}
.button:first-child {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.button:last-child {
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
}
/**
* Toolbar specific round badge.
*/
.badge-round {
bottom: 9px;
position: absolute;
right: 9px;
}
}
.filmstrip-only {
.toolbox,
.toolbox-toolbars {
align-items: center;
display: flex;
}
}
.subject {
background: linear-gradient(to bottom, rgba(255,255,255,.85) , rgba(255,255,255,.35));
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
box-shadow: 0 0 2px #000000, 0 0 10px #000000;
margin-left: 40%;
margin-right: 40%;
padding: 5px;
position: relative;
text-align: center;
width: auto;
z-index: $zindex3;
&.subject_slide-in {
top: 80px;
@include transition(top .3s ease-in);
}
&.subject_slide-out {
top: 0;
@include transition(top .3s ease-out);
}
}
#toolbar_button_profile {
height: $toolbarAvatarSize + 2*$toolbarAvatarPadding;
}
a.button>#avatar {
border-radius: 50%;
padding-bottom: $toolbarAvatarPadding;
padding-top: $toolbarAvatarPadding;
width: $toolbarAvatarSize;
}
#feedbackButton {
margin-top: auto;
}
/**
* START of slide in animation for extended toolbar.
*/
@include keyframes(slideInX) {
0% { transform: translateX(-100%); }
100% { transform: translateX(0%); }
}
.slideInX {
@include animation('slideInX .5s forwards');
}
@include keyframes(slideOutX) {
0% { transform: translateX(0%); }
100% { transform: translateX(-100%); }
}
.slideOutX {
@include animation('slideOutX .5s forwards');
}
@include keyframes(slideInExtX) {
0% { transform: translateX(-500%); }
100% { transform: translateX(0%); }
}
.slideInExtX {
@include animation('slideInExtX .5s forwards');
}
@include keyframes(slideOutExtX) {
0% { transform: translateX(0%); }
100% { transform: translateX(-500%); }
}
.slideOutExtX {
@include animation('slideOutExtX .5s forwards');
}
/**
* END of slide out animation for extended toolbar.
*/
/**
* START of slide in / out animation for main toolbar.
*/
@include keyframes(slideInY) {
100% { transform: translateY(0%); }
}
.slideInY {
@include animation('slideInY .5s forwards');
}
@include keyframes(slideOutY) {
0% { transform: translateY(0%); }
100% { transform: translateY(-100%); }
}
.slideOutY {
@include animation('slideOutY .5s forwards');
}
/**
* END of slide in / out animation for main toolbar.
*/
/**
* START of slide in animation for extended toolbar panel.
*/
@include keyframes(slideInExt) {
from { width: 0px; }
to { width: $sidebarWidth; } // TO FIX: Make this value a percentage.
}
.slideInExt {
@include animation("slideInExt .5s forwards");
}
@include keyframes(slideOutExt) {
from { width: $sidebarWidth; } // TO FIX: Make this value a percentage.
to { width: 0px; }
}
.slideOutExt {
@include animation("slideOutExt .5s forwards");
}
/**
* START of fade in animation for main toolbar
*/
.fadeIn {
opacity: 1;
@include transition(all .3s ease-in);
}
.fadeOut {
opacity: 0;
@include transition(all .3s ease-out);
}

38
css/_utils.scss Normal file
View File

@@ -0,0 +1,38 @@
/**
* Hides an element.
*/
.hide {
display: none !important;
}
/**
* Shows an element.
*/
.show {
display: block !important;
}
/**
* Shows an inline element.
*/
.show-inline {
display: inline-block !important;
}
/**
* Shows as a list item
**/
.show-list-item {
display: list-item !important;
}
/**
* Shows a flex element.
*/
.show-flex {
display: -webkit-box !important;
display: -moz-box !important;
display: -ms-flexbox !important;
display: -webkit-flex !important;
display: flex !important;
}

147
css/_variables.scss Normal file
View File

@@ -0,0 +1,147 @@
@import "themes/light";
/**
* Style variables
*/
$baseFontFamily: 'open_sanslight', 'Helvetica Neue', Helvetica, Arial, sans-serif;
$hangupColor: #bf2117;
$hangupFontSize: 2em;
/**
* Size variables.
*/
// Video layout.
$thumbnailToolbarHeight: 22px;
$thumbnailIndicatorBorder: 2px;
$thumbnailIndicatorSize: $thumbnailToolbarHeight;
$thumbnailVideoMargin: 2px;
$thumbnailsBorder: 2px;
$thumbnailVideoBorder: 2px;
$filmstripToggleButtonWidth: 17px;
/**
* Color variables.
*/
$defaultColor: #F1F1F1;
$defaultSideBarFontColor: #44A5FF;
$defaultSemiDarkColor: #ACACAC;
$defaultDarkColor: #2b3d5c;
$tooltipBg: rgba(0,0,0, 0.7);
/**
* Toolbar
*/
$defaultToolbarSize: 50px;
$defaultFilmStripOnlyToolbarSize: 37px;
$secToolbarFontSize: 1.9em;
$secToolbarLineHeight: 45px;
$toolbarAvatarPadding: 10px;
$toolbarAvatarSize: 40px;
$toolbarFontSize: 1.9em;
$toolbarTitleFontSize: 19px;
/**
* Main controls
* TODO: looks like we don't use it
*/
$inputSemiBackground: rgba(132, 132, 132, .8);
$inputLightBackground: #EBEBEB;
/**
* Video layout
*/
$videoThumbnailHovered: rgba(22, 94, 204, .4);
$videoThumbnailSelected: #165ECC;
$participantNameColor: #fff;
$thumbnailPictogramColor: #fff;
$dominantSpeakerBg: #165ecc;
$raiseHandBg: #D6D61E;
$audioLevelBg: #44A5FF;
$connectionIndicatorBg: #165ecc;
$audioLevelShadow: rgba(9, 36, 77, 0.9);
$videoStateIndicatorColor: $defaultColor;
$videoStateIndicatorBackground: $toolbarBackground;
/**
* Feedback Modal
*/
$feedbackContentBg: #fff;
$feedbackInputBg: #fff;
$feedbackTextColor: #000;
$feedbackInputTextColor: #333;
$feedbackInputPlaceholderColor: #777;
$rateStarLabelColor: #333;
$rateStarDefault: #ccc;
$rateStarActivity: #165ecc;
$rateStarSize: 34px;
/**
* Modals
*/
$modalButtonFontSize: 14px;
$modalMockAKInputBackground: #fafbfc;
$modalMockAKInputBorder: 1px solid #f4f5f7;
$modalTextColor: #333;
/**
* Misc.
*/
$borderRadius: 4px;
$defaultWatermarkLink: '../images/watermark.png';
$sidebarWidth: 220px;
$popoverMenuPadding: 13px;
$happySoftwareBackground: transparent;
/**
* Z-indexes. TODO: Replace this by a function.
*/
$zindex0: 0;
$zindex1: 1;
$zindex2: 2;
$zindex3: 3;
$filmstripVideosZ: 5;
$zindex10: 10;
$reloadZ: 20;
$poweredByZ: 100;
$ringingZ: 300;
$sideToolbarContainerZ: 300;
$toolbarZ: 400;
$tooltipsZ: 401;
$dropdownMaskZ: 900;
$dropdownZ: 901;
$centeredVideoLabelZ: 1010;
$jitsipopoverZ: 1012;
$popoverZ: 1015;
$overlayZ: 1016;
/**
* Font Colors
*/
$defaultFontColor: #777;
$defaultLightFontColor: #F1F1F1;
$defaultDarkFontColor: #000;
/**
* Forms
*/
//inputs
$inputControlEmColor: #f29424;
//buttons
$linkFontColor: #489afe;
$linkHoverFontColor: #287ade;
$formPadding: 16px;
/**
* Unsupported browser
*/
$primaryUnsupportedBrowserButtonBgColor: #17a0db;
$unsupportedBrowserButtonBgColor: #ff9a00;
$unsupportedBrowserTextColor: #4a4a4a;
$unsupportedBrowserTextSmallFontSize: 17px;
$unsupportedBrowserTitleColor: #fff;
$unsupportedBrowserTitleFontSize: 24px;
$unsupportedDesktopBrowserTextColor: rgba(255, 255, 255, 0.7);
$unsupportedDesktopBrowserTextFontSize: 21px;

View File

@@ -0,0 +1,162 @@
/**
* Override other styles to support vertical filmstrip mode.
*/
.vertical-filmstrip {
.filmstrip {
align-items: flex-end;
box-sizing: border-box;
display: flex;
flex-direction: column-reverse;
height: 100%;
/**
* Hide videos by making them slight to the right.
*/
.filmstrip__videos {
right: 0;
transition: right 2s;
&.hidden {
bottom: auto;
right: -196px;
}
}
#filmstripLocalVideo {
height: auto;
justify-content: flex-end;
}
/**
* Remove unnecssary padding that is normally used to prevent horizontal
* filmstrip from overlapping the left edge of the screen.
*/
#filmstripLocalVideo,
#filmstripRemoteVideos {
padding: 0;
}
#filmstripRemoteVideos {
display: flex;
flex: 1;
flex-direction: column;
height: auto;
overflow-x: hidden !important;
.remote-videos-container {
flex-direction: column;
}
}
/**
* Rotate the hide filmstrip icon so it points towards the right edge
* of the screen.
*/
&__toolbar {
transform: rotate(-90deg);
}
/**
* Move the remote video menu trigger to the bottom left of the
* video thumbnail.
*/
.remotevideomenu {
bottom: 0;
left: 0;
top: auto;
right: auto;
margin-bottom: 7px;
transform: translate3d(0,0,0);
}
#remoteVideos {
flex-direction: column-reverse;
flex-grow: 1;
}
.videocontainer {
&__toolbar,
&__toptoolbar {
transform: translate3d(0,0,0);
}
/**
* Move status icons to the bottom right of the thumbnail.
*/
&__toolbar {
text-align: right;
.toolbar-icon {
float: none;
margin: auto;
}
}
}
}
&.filmstrip-only {
.filmstrip {
flex-direction: row-reverse;
}
.filmstrip__videos-filmstripOnly {
height: 100%;
}
/**
* In filmstrip only mode, the toolbar is normally displayed in the
* vertical center of the filmstrip strip. In vertical filmstrip mode,
* that alignment makes the toolbar appear floating and detached from
* the filmstrip. So, instead anchor the toolbar next to the local
* video.
*/
.toolbar_filmstrip-only {
bottom: 0;
top: auto;
transform: none;
}
}
/**
* These styles are for the video labels that display on the top right. The
* styles adjust the labels' positioning as the filmstrip itself or
* filmstrip's remote videos appear and disappear.
*
* The class with-filmstrip is for when the filmstrip is visible.
* The class without-filmstrip is for when the filmstrip has been toggled to
* be hidden.
* The class opening is for when the filmstrip is transitioning from hidden
* to visible.
* The class with-remote-videos is for when the filmstrip has remote videos
* displayed, as opposed to 1-on-1 mode where they might be hidden.
* The class without-remote-videos is for when the filmstrip is visible
* but it has no videos to display.
*/
.video-state-indicator.moveToCorner {
transition: right 0.5s;
&.with-filmstrip.with-remote-videos {
&#recordingLabel {
right: 200px;
}
&#videoResolutionLabel {
right: 150px;
}
}
&.with-filmstrip.without-remote-videos {
transition-delay: 0.5s;
}
&.with-filmstrip.with-remote-videos.opening {
transition: 0.9s;
transition-timing-function: ease-in-out;
}
&.without-filmstrip {
transition: 1.2s ease-in-out;
transition-delay: 0.1s;
}
}
}

View File

@@ -0,0 +1,636 @@
#videoconference_page {
min-height: 100%;
}
#videospace {
display: block;
min-height: 100%;
position: absolute;
top: 0px;
left: 0px;
right: 0px;
overflow: hidden;
}
.video_blurred_container {
height: 100%;
filter: blur(40px);
left: 0;
overflow: hidden;
position: absolute;
top: 0;
width: 100%;
}
.videocontainer {
position: relative;
text-align: center;
&__background {
@include topLeft();
background-color: black;
border-radius: $borderRadius;
width: 100%;
height: 100%;
}
/**
* The toolbar of the video thumbnail.
*/
&__toolbar,
&__toptoolbar {
position: absolute;
left: 0;
z-index: $zindex3;
width: 100%;
box-sizing: border-box; // Includes the padding in the 100% width.
}
&__toolbar {
bottom: 0;
padding: 0 5px 0 5px;
height: $thumbnailToolbarHeight;
}
&__toptoolbar {
$toolbarPadding: 5px;
top: 0;
padding: $toolbarPadding;
padding-bottom: 0;
.connection-indicator,
span.indicator {
margin-right: em(5, 8);
}
span.indicator {
display: none;
&:last-child {
margin-right: 0;
}
}
.connection-indicator,
span.indicator {
position: relative;
font-size: 8px;
text-align: center;
line-height: $thumbnailIndicatorSize;
padding: 0;
float: left;
@include circle($thumbnailIndicatorSize);
box-sizing: border-box;
z-index: $zindex3;
background: $dominantSpeakerBg;
color: $thumbnailPictogramColor;
border: $thumbnailIndicatorBorder solid $thumbnailPictogramColor;
.indicatoricon {
@include absoluteAligning();
}
.connection {
position: relative;
display: inline-block;
margin: 0 auto;
left: 0;
@include transform(translate(0, -50%));
&_empty
{
color: #8B8B8B;/*#FFFFFF*/
overflow: hidden;
}
&_lost
{
color: #8B8B8B;
overflow: visible;
}
&_full
{
@include topLeft();
color: #FFFFFF;/*#15A1ED*/
overflow: hidden;
}
&_ninja
{
font-size: 1.5em;
}
}
.icon-connection,
.icon-connection-lost {
font-size: 1em;
}
}
}
&__hoverOverlay {
background: rgba(0,0,0,.6);
border-radius: $borderRadius;
position: relative;
width: 100%;
height: 100%;
visibility: hidden;
z-index: $zindex2;
}
&.audio-only {
.videoThumbnailProblemFilter {
filter: none;
}
}
}
#localVideoWrapper {
display:inline-block;
}
.flipVideoX {
transform: scale(-1, 1);
-moz-transform: scale(-1, 1);
-webkit-transform: scale(-1, 1);
-o-transform: scale(-1, 1);
}
#localVideoWrapper video,
#localVideoWrapper object {
border-radius: $borderRadius !important;
cursor: hand;
object-fit: cover;
}
#largeVideo,
#largeVideoWrapper,
#largeVideoContainer {
overflow: hidden;
text-align: center;
}
#largeVideoWrapper {
box-shadow: 0 0 20px -2px #444;
}
#largeVideo,
#largeVideoWrapper
{
object-fit: cover;
}
#sharedVideo,
#etherpad,
#localVideoWrapper video,
#localVideoWrapper object,
#localVideoWrapper,
#largeVideoWrapper,
#largeVideoWrapper>video,
#largeVideoWrapper>object,
.videocontainer>video,
.videocontainer>object {
position: absolute;
left: 0;
top: 0;
z-index: $zindex1;
width: 100%;
height: 100%;
}
#etherpad {
text-align: center;
}
#etherpad {
z-index: $zindex0;
}
/**
* Positions video thumbnail display name and editor.
*/
.videocontainer .displayname,
.videocontainer .editdisplayname {
display: inline-block;
position: absolute;
left: 10%;
width: 80%;
top: 50%;
@include transform(translateY(-40%));
color: $participantNameColor;
text-align: center;
text-overflow: ellipsis;
font-size: 12px;
font-weight: 100;
overflow: hidden;
white-space: nowrap;
line-height: $thumbnailToolbarHeight;
z-index: $zindex2;
}
/**
* Positions video thumbnail display name editor.
*/
.videocontainer .editdisplayname {
outline: none;
border: none;
background: none;
box-shadow: none;
padding: 0;
}
#localVideoContainer .displayname:hover {
cursor: text;
}
.videocontainer .displayname {
pointer-events: none;
padding: 0 3px 0 3px;
}
.videocontainer .editdisplayname {
height: auto;
}
#localDisplayName {
pointer-events: auto !important;
}
.videocontainer>a.displayname {
display: inline-block;
position: absolute;
color: #FFFFFF;
bottom: 0;
right: 0;
padding: 3px 5px;
font-size: 9pt;
cursor: pointer;
z-index: $zindex2;
}
/**
* Video thumbnail toolbar icon.
*/
.videocontainer .toolbar-icon {
font-size: 8pt;
text-align: center;
text-shadow: 0px 1px 0px rgba(255,255,255,.3), 0px -1px 0px rgba(0,0,0,.7);
color: #FFFFFF;
width: 12px;
line-height: $thumbnailToolbarHeight;
height: $thumbnailToolbarHeight;
padding: 0;
border: 0;
margin: 0px 5px 0px 0px;
float: left;
}
/**
* Toolbar icon internal i elements (font icons).
*/
.toolbar-icon>i {
line-height: $thumbnailToolbarHeight;
}
/**
* Toolbar icons positioned on the right.
*/
.toolbar-icon.right {
float: right;
margin: 0px 0px 0px 5px;
}
.raisehandindicator {
background: $raiseHandBg;
}
.connection-indicator {
background: $connectionIndicatorBg;
}
.remotevideomenu
{
display: inline-block;
position: absolute;
top: 0px;
right: 0;
margin-top: 7px;
z-index: $zindex3;
width: 18px;
height: 13px;
color: #FFF;
font-size: 10pt;
>i{
cursor: hand;
}
}
/**
* Audio indicator on video thumbnails.
*/
.videocontainer>span.audioindicator,
.videocontainer>.audioindicator-container {
position: absolute;
display: inline-block;
left: 6px;
top: 50%;
margin-top: -17px;
width: 6px;
height: 35px;
z-index: $zindex2;
border: none;
.audiodot-top,
.audiodot-bottom,
.audiodot-middle {
opacity: 0;
display: inline-block;
@include circle(5px);
background: $audioLevelShadow;
margin: 1px 0 1px 0;
transition: opacity .25s ease-in-out;
-moz-transition: opacity .25s ease-in-out;
}
span.audiodot-top::after,
span.audiodot-bottom::after,
span.audiodot-middle::after {
content: "";
display: inline-block;
width: 5px;
height: 5px;
border-radius: 50%;
-webkit-filter: blur(0.5px);
filter: blur(0.5px);
background: $audioLevelBg;
}
}
#reloadPresentation {
display: none;
position: absolute;
color: #FFFFFF;
top: 0;
right:0;
padding: 10px 10px;
font-size: 11pt;
cursor: pointer;
background: rgba(0, 0, 0, 0.3);
border-radius: 5px;
background-clip: padding-box;
-webkit-border-radius: 5px;
-webkit-background-clip: padding-box;
z-index: $reloadZ; /*The reload button should appear on top of the header!*/
}
.audiolevel {
display: inline-block;
position: absolute;
z-index: $zindex0;
border-radius:1px;
pointer-events: none;
}
#dominantSpeaker {
visibility: hidden;
width: 300px;
height: 300px;
margin: auto;
position: relative;
}
#mixedstream {
display:none !important;
}
#dominantSpeakerAvatar,
.dynamic-shadow {
width: 200px;
height: 200px;
}
#dominantSpeakerAvatar {
top: 50px;
margin: auto;
position: relative;
border-radius: 100px;
visibility: inherit;
background-color: #000000;
}
.dynamic-shadow {
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
margin: -100px 0 0 -100px;
transition: box-shadow 0.3s ease;
}
.userAvatar {
@include maxSize(60px);
@include absoluteAligning();
border-radius: 50%;
height: 50%;
width: auto;
}
.sharedVideoAvatar {
height: 100%;
width: 100%;
object-fit: cover;
}
.noMic {
position: absolute;
border-radius: 8px;
z-index: $zindex1;
width: 100%;
height: 100%;
background-image: url("../images/noMic.png");
background-color: #000;
background-repeat: no-repeat;
background-position: center;
}
.noVideo {
position: absolute;
border-radius: 8px;
z-index: $zindex1;
width: 100%;
height: 100%;
background-image: url("../images/noVideo.png");
background-color: #000;
background-repeat: no-repeat;
background-position: center;
}
.videoMessageFilter {
-webkit-filter: grayscale(.5) opacity(0.8);
filter: grayscale(.5) opacity(0.8);
}
.remoteVideoProblemFilter {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.videoProblemFilter {
-webkit-filter: blur(10px) grayscale(.5) opacity(0.8);
filter: blur(10px) grayscale(.5) opacity(0.8);
}
.videoThumbnailProblemFilter {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
#remoteConnectionMessage {
display: none;
position: absolute;
width: auto;
z-index: $zindex2;
font-weight: 600;
font-size: 14px;
text-align: center;
color: #FFF;
opacity: .80;
text-shadow: 0px 0px 1px rgba(0,0,0,0.3),
0px 1px 1px rgba(0,0,0,0.3),
1px 0px 1px rgba(0,0,0,0.3),
0px 0px 1px rgba(0,0,0,0.3);
background: rgba(0,0,0,.5);
border-radius: 5px;
padding: 5px;
padding-left: 10px;
padding-right: 10px;
}
#localConnectionMessage {
display: none;
position: absolute;
left: 0;
width: 100%;
top:50%;
z-index: $zindex2;
font-weight: 600;
font-size: 14px;
text-align: center;
color: #FFF;
opacity: .80;
text-shadow: 0px 0px 1px rgba(0,0,0,0.3),
0px 1px 1px rgba(0,0,0,0.3),
1px 0px 1px rgba(0,0,0,0.3),
0px 0px 1px rgba(0,0,0,0.3);
}
.filmstrip-only {
#videoResolutionLabel {
display: none;
}
}
.video-state-indicator {
background: $videoStateIndicatorBackground;
color: $videoStateIndicatorColor;
cursor: pointer;
font-size: 13px;
height: 40px;
line-height: 20px;
text-align: center;
min-width: 40px;
padding: 10px 5px;
border-radius: 50%;
position: absolute;
box-sizing: border-box;
i {
cursor: pointer;
}
}
#videoResolutionLabel,
.centeredVideoLabel.moveToCorner {
z-index: $tooltipsZ;
}
.centeredVideoLabel {
bottom: 45%;
border-radius: 2px;
display: none;
-webkit-transition: all 2s 2s linear;
transition: all 2s 2s linear;
z-index: $centeredVideoLabelZ;
&.moveToCorner {
bottom: auto;
}
}
.moveToCorner {
position: absolute;
top: 30px;
right: 30px;
}
.moveToCorner + .moveToCorner {
right: 80px;
}
.video-state-indicator-menu {
display: none;
padding: 10px;
position: absolute;
right: -10px;
top: 20px;
.video-state-indicator-menu-options {
background: $popoverBg;
border-radius: 3px;
color: $popoverFontColor;
margin-top: 20px;
padding: 5px 0;
position: relative;
div {
cursor: pointer;
padding: 10px;
padding-right: 30px;
text-align: left;
white-space: nowrap;
&.active {
background: $toolbarToggleBackground;
}
&:hover:not(.active) {
background: $popupMenuSelectedItemBackground;
}
i {
margin-right: 5px;
vertical-align: middle;
}
}
}
.video-state-indicator-menu-options::after {
content: " ";
border-color: transparent transparent $popoverBg transparent;
border-style: solid;
border-width: 5px;
position: absolute;
right: 15px;
top: -10px;
}
}
.video-state-indicator:hover,
.video-state-indicator *:hover {
background: $toolbarSelectBackground;
.video-state-indicator-menu {
display: block;
}
}

View File

@@ -1,4 +1,3 @@
#disable_welcome {
display:none;
}
@@ -21,10 +20,9 @@
-moz-user-select: none;
background-repeat: no-repeat;
font-weight: 500;
font-family: Helvetica;
font-size: 16px;
color: #acacac;
z-index: 2;
z-index: $zindex2;
}
#disable_welcome:checked + label
@@ -35,10 +33,9 @@
-moz-user-select: none;
background-repeat: no-repeat;
font-weight: 500;
font-family: Helvetica;
font-size: 16px;
color: #acacac;
z-index: 2;
z-index: $zindex2;
}
#enter_room_form {
@@ -53,48 +50,62 @@
float: left;
}
#domain_name
.domain-name
{
float: left;
padding: 20px 0px 10px 20px;
height: 55px;
line-height: 55px;
font-size: 18px;
font-weight: 500;
font-family: Helvetica;
padding-left: 20px;
color: $defaultDarkColor;
}
#enter_room_field {
font-size: 15px;
padding: 15px 0px 10px 10px;
border: none;
-webkit-appearance: none;
width: 228px;
height: 55px;
font-weight: 500;
font-family: Helvetica;
box-shadow: none;
float: left;
background-color: #FFFFFF;
position: relative;
z-index: 2;
}
.enter-room {
&__field {
font-size: 15px;
border: none;
-webkit-appearance: none;
width: 228px;
height: 55px;
line-height: 55px;
font-weight: 500;
box-shadow: none;
float: left;
background-color: #FFFFFF;
position: relative;
z-index: $zindex2;
}
#enter_room_button {
width: 73px;
height: 45px;
background-color: #16a8fe;
moz-border-radius: 1px;
-webkit-border-radius: 1px;
color: #ffffff;
font-weight: 600;
border: none;
margin-top: 5px;
font-size: 19px;
font-family: Helvetica;
padding-top: 6px;
outline: none;
float:left;
position: relative;
z-index: 2;
&__reload {
display: block;
width: 30px;
color: #acacac;
font-size: 1.9em;
line-height: 55px;
z-index: $zindex3;
float: left;
cursor: pointer;
text-align: center;
}
&__button {
width: 73px;
height: 45px;
background-color: #21B9FC;
moz-border-radius: 1px;
-webkit-border-radius: 1px;
color: #ffffff;
font-weight: 600;
border: none;
margin-top: 5px;
font-size: 19px;
padding-top: 6px;
outline: none;
float:left;
position: relative;
z-index: $zindex2;
}
}
#enter_room_container {
@@ -136,7 +147,6 @@
width: 885px;
height: 100px;
color: #ffffff;
font-family: Helvetica;
font-size: 24px;
text-align: center;
margin: 0px auto 0px auto;
@@ -171,7 +181,6 @@
background-repeat: no-repeat;
width: 169px;
height: 169px;
font-family: Helvetica;
color: #ffffff;
font-size: 22px;
/*font-weight: bold;*/
@@ -183,23 +192,9 @@
.feature_description
{
width: 190px;
font-family: Helvetica;
color: #ffffff;
font-size: 16px;
padding-top: 30px;
line-height: 22px;
font-weight: 200;
}
#reload_roomname
{
width: 30px;
height: 19px;
color: #acacac;
margin-top: 22px;
z-index: 3;
float: left;
cursor: pointer;
text-align: center;
display: none;
}

View File

@@ -0,0 +1,68 @@
.select2-container.aui-select2-container {
background-color: transparent !important;
margin-top: 2px;
a.select2-choice {
height: 28px !important;
line-height: 18px !important;
width: 100% !important;
background-color: $selectBg !important;
border-color: $selectBg !important;
color: $selectFontColor !important;
text-shadow: none !important;
font-size: 12px !important;
margin: 0 auto !important;
&:after {
border-top-color: $selectFontColor;
}
}
&.select2-dropdown-open{
a.select2-choice {
background-color: $selectActiveBg !important;
border-color: $selectActiveBg !important;
}
}
}
.select2-drop.aui-select2-drop.aui-style-default {
z-index: $dropdownZ;
background-color: $selectActiveBg;
border-color: $selectActiveBg;
.select2-results{
background-color: $selectActiveBg;
border-color: $selectActiveBg;
&::-webkit-scrollbar {
background-color: transparent;
}
&::-webkit-scrollbar-track {
background-color: transparent;
}
&::-webkit-scrollbar-track-piece {
background-color: transparent;
}
&::-webkit-scrollbar-thumb {
background-color: $selectActiveItemBg;
}
.select2-result{
&.select2-highlighted{
background-color: $selectActiveItemBg;
}
.select2-result-label{
font-size: 12px;
color: $selectFontColor !important;
line-height: 20px;
}
}
}
}
.select2-drop-mask {
z-index: $dropdownMaskZ;
}

View File

@@ -0,0 +1,101 @@
.button-control {
box-sizing: border-box;
display: inline-block;
border: 1px solid $buttonBorder;
vertical-align: baseline;
height: 30px;
min-width: 60px;
padding: 4px 10px;
margin: 0;
line-height: 1.5em;
outline: none;
background-color: transparent;
float: right;
font-size: 14px;
margin-left: 10px;
color: $buttonColor;
font-weight: $buttonFontWeight;
@include transition(background-color .1s ease-out);
&[disabled] {
color: #666;
cursor: default;
}
&_full-width {
margin: 0;
width: 100%;
}
&:hover {
border: 1px solid $buttonHoverBorder;
background-color: $buttonHoverBackground;
@include transition(background-color .1s ease-in);
}
&:active {
@include box-shadow(0, 0, 1px, $buttonShadowColor, true);
}
&_light {
color: $defaultDarkColor;
background-color: $buttonLightBackground;
border: 1px solid $buttonLightBorder;
&:hover {
border: 1px solid $buttonLightHoverBorder;
background-color: $buttonLightHoverBackground;
}
}
&_link {
color: $buttonLinkColor;
background-color: $buttonLinkBackground;
&:hover {
background-color: $buttonLinkBackground;
}
}
&_overlay {
color: $primaryButtonColor;
background-color: $overlayButtonBg;
border-radius: 2px;
border: none;
&:hover {
background-color: $primaryButtonBackground;
border: none;
}
}
&_primary {
background-color: $primaryButtonBackground;
border: 1px solid $primaryButtonBackground;
color: $primaryButtonColor !important;
font-weight: $primaryButtonFontWeight;
&:hover {
border: 1px solid $primaryButtonHoverBackground;
background-color: $primaryButtonHoverBackground;
}
&[disabled] {
color: $primaryButtonColor;
}
}
&_close {
color: $defaultFontColor;
}
&_submit {
color: $linkFontColor;
&:hover {
color: $linkHoverFontColor;
}
}
&_center {
float: none !important;
}
}

View File

@@ -0,0 +1,62 @@
.form-control {
padding: $formPadding 0;
&:first-child {
padding-top: 0;
}
&:last-child {
padding-bottom: 0;
}
&__text {
margin: 8px 0;
font-size: 1em
}
&__label {
font-size: 1em;
font-weight: $labelFontWeight;
}
&__em {
color: $inputControlEmColor;
}
&__hint {
margin-top: 0;
font-size: $hintFontSize;
span {
vertical-align: middle;
}
&_error {
color: $errorColor;
}
}
&__container {
position: relative;
width: 100%;
margin-top: 5px;
margin-bottom: 5px;
@include flex();
.button-control {
margin: 1px 0 1px 10px;
}
}
&__right {
position: absolute;
right: 0;
}
}
/**
* Set a specific color for read only style.
*/
input:read-only {
color: $readOnlyInputColor;
}

View File

@@ -0,0 +1,29 @@
.input-control {
@include transition(all .2s ease-in);
display: inline-block;
width: 100%;
padding: 5px 7px;
border-radius: $borderRadius;
line-height: 32px;
height: 32px;
text-align: left;
margin-bottom: 8px;
&:last-child {
margin-bottom: inherit;
}
&::selection {
background-color: $defaultDarkSelectionColor;
}
&.error {
color: $errorColor;
border-color: $errorColor;
}
}
@include placeholder {
color: $placeHolderColor;
}

View File

@@ -0,0 +1,41 @@
/**
* Disable the default webkit styles for range inputs (sliders).
*/
input[type=range]{
-webkit-appearance: none;
background: none;
}
/**
* Disable the default focus styles for webkit range inputs (sliders).
*/
input[type=range]:focus {
outline: none;
}
/**
* Include the mixin for a range input style.
*/
@include slider {
background: $sliderTrackBackground;
border: none;
border-radius: 3px;
cursor: pointer;
height: 6px;
width: 100%;
}
/**
* Include the mixin for a range input thumb style.
*/
@include slider-thumb {
-webkit-appearance: none;
background: white;
border: 1px solid $sliderThumbBackground;
border-radius: 50%;
box-shadow: 0px 0px 1px $sliderThumbBackground;
cursor: pointer;
height: 14px;
margin-top: -4px;
width: 14px;
}

20
css/components/_link.scss Normal file
View File

@@ -0,0 +1,20 @@
.link {
cursor: pointer;
color: $linkFontColor;
@include transition(color .1s ease-out);
&:hover {
color: $linkHoverFontColor;
text-decoration: underline;
@include transition(color .1s ease-in);
}
}
/**
* Helper links are links that are meant to open a documentation page or more
* detailed info.
*/
.helper-link {
@extend .link;
font-size: 12px;
}

View File

@@ -1,54 +0,0 @@
#contactlist {
display: none;
background-color: black;
cursor: default;
}
#contactlist>div.title {
text-align: left;
padding: 7px 10px;
margin: 2px;
color: #00ccff;
font-size: 11pt;
border-bottom: 1px solid #676767;
}
#contactlist>ul#contacts {
position: absolute;
top: 31px;
bottom: 0px;
width: 100%;
margin: 0px;
padding: 0px;
overflow-y: scroll;
overflow-x: hidden;
}
#contacts>li {
list-style-type: none;
text-align: left;
color: #FFF;
font-size: 10pt;
padding: 7px 10px;
margin: 2px;
}
#contacts>li>p {
display: inline-block;
vertical-align: middle;
margin: 0px;
}
.avatar {
padding: 0px;
margin-right: 10px;
vertical-align: middle;
font-size: 22pt;
border-radius: 20px;
max-height: 30px;
max-width: 30px;
}
#contactlist .clickable {
cursor: pointer;
}

View File

@@ -1,48 +0,0 @@
/**
* The feedback window inner div css.
*/
.feedback {
width: 450px;
display: block;
margin-left: auto;
margin-right: auto;
text-align: center;
font-size: 22px;
}
/**
* Style of the thank you text inside the feedback window.
*/
.feedbackTitle {
font-size: 22px;
color: #087dba;
}
/**
* Stars div css.
*/
#stars {
font-size: 30px;
}
/**
* Star css.
*/
#stars>a {
padding-right: 4px;
}
/**
* Mouse over a star.
*/
.starHover {
color: #087dba;
}
/**
* Detailed feedback section text area style.
*/
.feedbackDetails textarea {
resize: vertical;
min-height: 100px;
}

View File

@@ -1,123 +0,0 @@
@font-face {
font-family: 'jitsi';
src:url('../fonts/jitsi.eot?94d075');
src:url('../fonts/jitsi.eot?#iefix94d075') format('embedded-opentype'),
url('../fonts/jitsi.woff?94d075') format('woff'),
url('../fonts/jitsi.ttf?94d075') format('truetype'),
url('../fonts/jitsi.svg?94d075#jitsi') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
font-family: 'jitsi';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 0.75em;
font-size: 1.22em;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-contactList:before {
content: "\e615";
}
.icon-avatar:before {
content: "\e616";
}
.icon-callRetro:before {
content: "\e611";
}
.icon-callModern:before {
content: "\e612";
}
.icon-recDisable:before {
content: "\e613";
}
.icon-recEnable:before {
content: "\e614";
}
.icon-authenticate:before {
content: "\e1ae";
}
.icon-kick1:before {
content: "\e60f";
}
.icon-kick:before {
content: "\e610";
}
.icon-share-desktop:before {
content: "\e602";
}
.icon-chat-simple:before {
content: "\e606";
}
.icon-full-screen:before {
content: "\e60d";
}
.icon-exit-full-screen:before {
content: "\e60e";
}
.icon-link:before {
content: "\e600";
}
.icon-chat:before {
content: "\e601";
}
.icon-presentation:before {
content: "\e603";
}
.icon-security:before {
content: "\e604";
}
.icon-share-doc:before {
content: "\e605";
}
.icon-telephone:before {
content: "\e611";
}
.icon-security-locked:before {
content: "\e607";
}
.icon-camera:before {
content: "\e608";
}
.icon-camera-disabled:before {
content: "\e609";
}
.icon-mic-disabled:before {
content: "\e60a";
}
.icon-microphone:before {
content: "\e60b";
}
.icon-hangup:before {
content: "\e617";
}
.icon-reload:before {
content: "\e618";
}
.icon-filmstrip:before {
content: "\e619";
}
.icon-connection:before {
line-height: normal;
content: "\e61a";
}
.icon-settings:before {
content: "\e61b";
}
.icon-dialPad:before {
content: "\e61c";
}

View File

@@ -1,105 +0,0 @@
.jitsipopover {
position: absolute;
top: 0;
left: 0;
z-index: 1010;
display: none;
max-width: 300px;
min-width: 100px;
padding: 1px;
text-align: left;
color: #333333;
background-color: #ffffff;
background-clip: padding-box;
border: 1px solid #cccccc;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 6px;
/*-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);*/
/*box-shadow: 0 5px 10px rgba(0, 0, 0, 0.4);*/
white-space: normal;
margin-top: -10px;
margin-bottom: 35px;
}
.jitsipopover.black
{
background-color: rgba(0,0,0,0.8);
color: #ffffff;
}
.jitsipopover-content {
padding: 9px 14px;
font-size: 10pt;
white-space:pre-wrap;
text-align: center;
}
.jitsipopover > .arrow,
.jitsipopover > .arrow:after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.jitsipopover > .arrow {
border-width: 11px;
left: 50%;
margin-left: -11px;
border-bottom-width: 0;
border-top-color: #999999;
border-top-color: rgba(0, 0, 0, 0.25);
bottom: -11px;
}
.jitsipopover > .arrow:after {
border-width: 10px;
content: " ";
bottom: 1px;
margin-left: -10px;
border-bottom-width: 0;
border-top-color: #ffffff;
}
.jitsipopover.black > .arrow:after
{
border-top-color: rgba(0, 0, 0, 0.8);
}
.jitsiPopupmenuPadding {
height: 35px;
width: 100px;
position: absolute;
bottom: -35;
}
.jitsipopover_green
{
color: #4abd04;
}
.jitsipopover_orange
{
color: #ffa800;
}
.jitsipopover_blue
{
color: #06a5df;
}
.jitsipopover_showmore
{
background-color: #06a5df;
color: #ffffff;
cursor: pointer;
border-radius: 3px;
text-align: center;
width: 90px;
height: 16px;
padding-top: 4px;
padding-left: 10px;
padding-right: 10px;
margin: 15px auto 0px auto;
}

Some files were not shown because too many files have changed in this diff Show More