Commit Graph

4060 Commits

Author SHA1 Message Date
Saúl Ibarra Corretgé 1c1604bee7 [Android] Don't mute the microphone under any circumstance
It's a global action, and if we do that other applications won't be able to use
it. I experienced this with the system camera. We do, however, make sure to
enable it when we need to.

Note that enabling it doesn't mean we are *using* it. It just means we *can*,
and that we will get actual audio when we do.
2017-08-03 13:45:41 -05:00
Saúl Ibarra Corretgé 99fd325a51 [Android] Fix gradle warning
This setting is no longer used.
2017-08-03 13:45:41 -05:00
Saúl Ibarra Corretgé 4f6ec920cd [Android] Set targetApiVersion to 25
We keep being compatible with versions all the way down to 16 for now, but this
will disable internal compatibility shims when running on 25.
2017-08-03 13:45:41 -05:00
Saúl Ibarra Corretgé 0d33844d51 [Android] Use an appropriate Android support library version
It must match the compileSdkVersion major number.
2017-08-03 13:45:41 -05:00
Lyubo Marinov 0836f2cefd [RN] Prefetch remote avatar images 2/2 2017-08-03 13:45:41 -05:00
Lyubo Marinov 97832e0eef [RN] Prefetch remote avatar images 1/2 2017-08-03 13:45:41 -05:00
Lyubo Marinov 00e058d392 [RN] Cache avatars and provide a default in case load fails (2)
Refactors the previous "[RN] Cache avatars and provide a default in
case load fails" for the purposes of simplification but also modifies
its functionality at the same time. For example:

- Always displays the default avatar immediately which may be seen if
  the remote avatar needs to be downloaded.
- Does not use random colors.
- Uses a default avatar image which is not transparent and ugly but at
  least it's the same image that's used on Web. I've started talks to
  have images/avatar2.png replaced with a transparent and beautiful
  so that will land later on and we'll see the automagic colors in all
  their glory then.
2017-08-03 13:45:41 -05:00
Lyubo Marinov 504646fff0 Coding style 2017-08-03 13:45:41 -05:00
Saúl Ibarra Corretgé 122ebe48c7 [RN] Cache avatars and provide a default in case load fails
Avatars are cached to the filesystem and loaded from there when requested again.
The cache is cleaned after a conference ends and on application startup
(defensive move).

In addition, implement a fully local avatar system, which is used as a fallback
when loading a remote avatar fails. It can also be forced using a prop.

The fully local avatars use a user icon as a mask and apply a background color
qhich is picked by hashing the URI passed to the avatar. If no URI is passed a
random color is chosen.

A grace period of 1 second is also implemented so a default local avatar will be
rendered if an Avatar component is mounted but has no URI. If a URI is specified
later on, it will be loaded and displayed. In case loading the remote avatar
fails, the locally generated one will be used.
2017-08-03 13:45:41 -05:00
Дамян Минков fe8ac0fff9 Merge pull request #1852 from virtuacoplenny/lenny/device-error-notifications
feat(device-errors): move device error dialogs to notifications
2017-08-02 14:55:18 -05:00
Leonard Kim cd66a7fcb7 ref(notifications): bring hiding of notifications into redux 2017-08-02 11:19:38 -07:00
Leonard Kim 74ddae4a6a feat(device-errors): move device error dialogs to notifications
- Create a notification component for displaying a toggle.
- Create an action for showing the component if allowed by
  the local storage setting and for saving the setting to
  local storage.
- Remove all notifications having a timeout by default so the
  device error notification must be dismissed manually.
- Split the camera and mic error dialog into two separate
  notifications.
2017-08-01 16:33:00 -07:00
Lyubo Marinov 1ad8436cb5 [Android] Use loadURL in the app 2017-08-01 12:07:22 -05:00
Lyubo Marinov 6b2a93909b [iOS] Use loadURL in the app 2017-08-01 06:31:03 -05:00
Lyubo Marinov c259551d9a [RN] Handle multiple schemes/protocol in URLs 2017-08-01 06:31:03 -05:00
Lyubo Marinov 377be4272a [RN] Fix the conference URL delivered to JitsiMeetView's listeners 2017-08-01 06:31:03 -05:00
Lyubo Marinov 737419dbe8 Do not require domain in SDK and ExternalAPI 2017-08-01 06:31:03 -05:00
Lyubo Marinov 1748049322 [RN] Remove unncessary characters from the invite URL 2017-08-01 06:31:03 -05:00
Lyubo Marinov caea02a322 [RN] Mitigate 'Not joining a new URL while in a conference' 2017-08-01 06:31:03 -05:00
bgrozev d778b716be Merge pull request #1850 from jitsi/iframe_api_doc
doc(iframe_api): Fix the names of the properties in the options object.
2017-08-01 00:51:44 -05:00
hristoterezov 4dcbe5c6a0 doc(iframe_api): Fix the names of the properties in the options object. 2017-08-01 08:48:50 +03:00
virtuacoplenny c04ef05058 feat(presence): display status in thumbnail and large video (#1828)
* feat(presence): display status in thumbnail and large video

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

* squash: do not show presence message if connection message is displayed
2017-07-31 18:33:22 -05:00
Дамян Минков 82117a0aef Handles disabled dial-out codes. (#1847)
Hides the UI component showing dialout codes and uses the dial input without validating it.

Skips printing error when dial-in numbers is not configured.
2017-07-31 12:44:50 -07:00
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