Commit Graph

1011 Commits

Author SHA1 Message Date
Lyubo Marinov 0bbcd3181c [RN] Adjust Conference for the reduced UI mode (Coding style) 2018-02-13 13:24:10 -06:00
Saúl Ibarra Corretgé 7a9ff9975a [RN] Adjust Conference for the reduced UI mode 2018-02-13 11:59:12 -06:00
Lyubo Marinov 10f72f8e40 [RN] Unpin participant and set last N to 1 if the filmstrip is disabled (Coding style: consistency) 2018-02-13 11:58:26 -06:00
Saúl Ibarra Corretgé 417e1e83e7 [RN] Unpin participant and set last N to 1 if the filmstrip is disabled 2018-02-13 09:58:44 -06:00
Lyubo Marinov cacc4bd769 [RN] Dynamically adjust LargeView's Avatar to available size (Coding style: comments, flow)
Flow caught an incorrect function call.
2018-02-13 09:58:43 -06:00
Saúl Ibarra Corretgé 1419247801 [RN] Dynamically adjust LargeView's Avatar to available size
When in PiP mode the LargeView will not be large enough to hold the avatar (for
those interested in the details, our avatar's size is 200, and in PiP mode the
app is resized to about 150).

In order to solve it, this PR refactors how the avatar style is passed along,
reducing it to a single "size" prop. With this only prop, the Avatar compononent
will compute the width, height and borderRadius, plus deal with some Android
shenanigans.

In addition, the LargeView component now uses DimensionsDetector to check its
own size and adjust the size prop passed to the Avatar component as needed.
2018-02-13 09:58:43 -06:00
virtuacoplenny 4fb37c38eb fix(large-video): do not show background for Firefox and temasys (#2316)
* ref(large-video): reactify background

This is pre-requisite work for disabling the background on
certain browsers, namely Firefox. By moving the component
to react, and in general encapsulating background logic,
selectively disabling the background will be easier.

The component was left for LargeVideo to update so it can
continue to coordinate update timing with the actual large
video display. If the background were moved completely into
react and redux with LargeVideo, then background updates would
occur before large video updates causing visual jank.

* fix(large-video): do not show background for Firefox and temasys

Firefox has performance issues with adding filter effects on
animated elements. On temasys, the background videos weren't
really displaying anyway.

* some props refactoring

Instead of passing in classes to LargeVideoBackground, rely on
explicit props. At some point LargeVideo will have to be reactified
and the relationsihp between it and LargeVideoBackground might
change, so for now make use of props to be explicit about
how LargeVideoBackground can be modified.

Also, set the jitsiTrack to display on LargeVideoBackground to
null if the background is not displayed. This was an existing
optimization, although previously done with pausing and playing.

* squash: use newly exposed RTCBrowserType

* squash: rebase and use new lib browser util

* squash: move hiding logic all into LargeVideo

* squash: remove hiding of background on stream change. hopefully doesnt break anything
2018-02-12 16:29:29 -08:00
Leonard Kim f3b5ed2ef4 ref(notifications): convert Thank You message to a notification 2018-02-12 17:53:29 -06:00
Leonard Kim 7341c7bf84 ref(notifications): stop passing around Notifications component
Passing around of the component was used when there were two
independent Notification components. Now that there is only
one Notification component, it is not necessary to pass
around the component.
2018-02-12 17:53:29 -06:00
Boris Grozev 03fc711e81 feat: Makes the google analytics tracking id configurable. 2018-02-12 14:00:04 -06:00
Lyubo Marinov a370a88d19 [RN] Add ability to enable /disable the toolbox (Coding style: comments, consistency) 2018-02-12 11:53:42 -06:00
Saúl Ibarra Corretgé 7153d94dad [RN] Add ability to enable /disable the toolbox 2018-02-12 11:52:54 -06:00
Lyubo Marinov 240fff74c7 [RN] Add ability to enable / disable the filmstrip (Coding style: comments, naming) 2018-02-12 11:52:46 -06:00
Saúl Ibarra Corretgé 7bd8b7948f [RN] Add ability to enable / disable the filmstrip
This is only implemented for mobile at the moment, since web doesn't handle
visibility within the Filmstrip component yet, so this should be added right
then, too.
2018-02-12 10:02:34 -06:00
Saúl Ibarra Corretgé bd301403c4 [RN] Fix app startup from a CallKit intent
Story time.  Currently the app can be started in 4 ways:

- just tapping on the icon
- via a deep link
- via a universal link
- via the phone's recent calls list

The last 3 options will make the app join the specified room upon launch. React
Native's Linking module implements the necessary bits to handle deep or
universal linking, but CallKit is out of its scope.

In order to blend any type of app startup mode, a new LaunchOptions module (iOS
only) exports a getInitialURL function, akin to the one in the Linking module,
but taking CallKit instents into consideration. This function is then used to
make app startup with a URL consistent across all different modes.
2018-02-07 10:12:10 -06:00
Дамян Минков ba94ba30c5 Handles connection failed event details (passing them to analytics). (#2432)
* Handles connection failed event details (passing them to analytics).

* Fixing comments.

* Updates depending versions to be able to test.

* Fixing comments.

* Fixes wrong jsdoc.
2018-02-06 14:54:21 -08:00
Saúl Ibarra Corretgé 5305557ce5 [RN] Add a "reduced UI" mode
It's detected based on a size threshold.
2018-02-06 15:53:52 -06:00
Lyubo Marinov c9d8b5c827 Finally! Let there be... responsive-ui!
We started on the way to responsive UI and its design with aspect ratio
and keeping the filmstrip on the short side of the app's visible
rectangle.

Shortly, we're going to introduce reduced UI for Picture-in-Picture. And
that's where we'll need another dimensions-based detector akin to the
aspect ratio detector.

While the AspectRatioDetector, the up-and-coming ReducedUIDetector, and
their base DimensionsDetector are definitely separate abstractions and
implementations not mixed for the purposes of easy extensibility and
maintenance, the three of them are our building blocks on top of which
we'll build our responsive UI.
2018-02-06 15:53:27 -06:00
Saúl Ibarra Corretgé 0ad1c88cd2 [RN] Refactor AspectRatioDetector
Factor out the dimensions detection login into a DimensionsDetector component.
2018-02-06 11:21:12 -06:00
Saúl Ibarra Corretgé 78fbfba573 [iOS] Fix initial CallKit muted state
Turns out this was a bit more involved than I originally thought due to an
interesting (corner) case: IFF the user was never asked about microphone
permissions and the call starts with audio muted, unmuting from the CallKit
interface won't work (iOS won't show the prompt, it fails immediately) and we
need to sync the mute state back.
2018-02-06 10:24:06 -06:00
Saúl Ibarra Corretgé 9e53d40b9c [RN] Honor filmstrip visibility state 2018-02-05 15:55:05 -06:00
Lyubo Marinov aa314c10ac Coding style: consistent naming, one name per abstraction
Instead of having visible and visibility and setToolboxVisible and
setFilmstripVisibility, have only visible as a name.
2018-02-05 15:55:04 -06:00
Lyubo Marinov 62c9762793 [RN] Protect AbstractApp and localStorage initialization 2018-02-05 15:26:01 -06:00
Lyubo Marinov d7dddb2509 Introduce base/storage to represent the Web Storage API and persistence-related customizations 2018-02-02 15:13:26 -06:00
Lyubo Marinov 83243d5980 [RN] Fix legacy recent-list storage 2018-02-02 15:13:26 -06:00
Zoltan Bettenbuk 6e05cab46e [RN] Fix legacy recent-list storage 2018-02-02 15:13:26 -06:00
Lyubo Marinov 7954d5fd39 Coding style 2018-02-02 15:13:26 -06:00
zbettenbuk 158cadf4f9 Improve persistency layer 2018-02-02 15:13:26 -06:00
Lyubo Marinov f35578c803 [RN] Polyfill __filename ASAP 2018-02-02 15:13:26 -06:00
Saúl Ibarra Corretgé c087e90099 [RN] Fix setReceivedVideoQuality if we are not yet in a conference
It may happen that such action is fired while joining.
2018-02-02 14:33:49 -06:00
Saúl Ibarra Corretgé da0ae73d10 [RN] Fix pinParticipant if we are not yet in a conference
It may happen that such action is fired while joining.
2018-02-02 14:32:15 -06:00
Saúl Ibarra Corretgé b4d44f367d [RN] aspect-ratio: preserve mode when width === height
If the view gets resized to a 1:1 aspect ratio, remember the previous mode to
avoid flickering when going back to a larger size or different aspect ratio.
2018-02-02 14:19:08 -06:00
zbettenbuk 6a9e6db3be [RN] Validate the URL in app-settings 2018-01-31 16:06:24 +01:00
zbettenbuk aa9efd6f69 [RN] Improve app-settings back button style 2018-01-29 10:58:46 +01:00
Leonard Kim 2720c76e4d fix(password): do not let guests edit password when roles are enabled
If config.enableUserRolesBasedOnToken is true, only let moderators
and non-guests modify the password. Otherwise, only let moderators
edit the password.
2018-01-28 18:48:24 -06:00
Lyubo Marinov e1f967869a [RN] Add builtin translations 2018-01-26 12:18:43 -06:00
Saúl Ibarra Corretgé 8673083829 [RN] Add builtin translations
Load all of them as imports, so the packager includes them in the bundle. Then
register them with the i18next library.
2018-01-26 16:27:33 +01:00
Boris Grozev dc92fb5073 feat: Sets the "product" field in the analytics handler constructor. 2018-01-23 16:14:31 -06:00
virtuacoplenny 12ec982067
Merge pull request #2400 from jitsi/browser_caps2
fix(lib-jitsi-meet): RTCBrowserType -> browser.
2018-01-22 13:57:50 -08:00
hristoterezov c9e3e5052d fix(lib-jitsi-meet): RTCBrowserType -> browser. 2018-01-22 15:56:06 -06:00
Emil Ivov 22401614a7
Merge pull request #2401 from virtuacoplenny/lenny/spot-feedback-api
feat(api): expose a way to submit feedback
2018-01-19 16:57:18 -06:00
Leonard Kim 762f529f1d feat(api): expose a way to submit feedback
Spot will need a way to submit call feedback using the iframe
api. For now expose a method on conference.js to submit that
feedback. Exposing on conference.js looks to be the existing
pattern... Also add an event to notify consumers of the iframe
api that feedback was submitted, as postMessage is async
and the notification can at least give some guarantee maybe.

I haven't updated documentation yet as I'm not confident
about this api.
2018-01-19 14:27:44 -08:00
Saúl Ibarra Corretgé 1f6b743bec [RN] Join room when pressing "go" on the keyboard
Improve the experience when joining a room by removing the need to tap the join
button. The keyboard type has also been set to "go", which translated on the
builtin keyboard button label to be "go" (it's builtin, the operating system
translates it). This works on both Android and iOS.
2018-01-19 16:10:51 -06:00
Lyubo Marinov 48f4317adb [RN] Make video track fade-in effect cross-platform 2018-01-19 16:05:59 -06:00
Saúl Ibarra Corretgé 75f6786588 [RN] Make video track fade-in effect cross-platform
Android uses a SurfaceView to render video, which is not quite a View, so the
fade-in animation (which varies the opacity) doesn't work.

Instead, add an opaque black view covering the video, which transitions to
transparent. This creates much smoother transitions on Android, while behaving
the same.

In addition, I removed the flip animation for local tracks, which is no longer
used, since the camera is switched without changing tracks.
2018-01-19 15:32:17 -06:00
Lyubo Marinov 3ec4d67a99 [RN] Strip spaces when parsing URLs 2018-01-19 15:26:13 -06:00
Saúl Ibarra Corretgé a23eec55e8 [RN] Strip spaces when parsing URLs 2018-01-19 15:14:51 -06:00
Saúl Ibarra Corretgé 98ff20a026 [RN] Simplify initialization of AsyncStorage 2018-01-19 09:41:34 -06:00
Lyubo Marinov b04661b40b [RN] Revert unintentional disabling of the yellow box 2018-01-18 21:11:24 -06:00
Lyubo Marinov 112c856850 Fix settings screen layout on iOS and add soft back button 2018-01-18 15:45:25 -06:00
zbettenbuk 410dc132e1 Fix settings screen layout on iOS and add soft back button 2018-01-18 10:06:26 -06:00
Saúl Ibarra Corretgé b7f950f5f7 feat(analytics): shield sending analytics events
Any failure in analytics should not prevent the natural flow of the code. Shield
the function by catching and logging any exception.
2018-01-17 16:46:54 -06:00
Paweł Domas 7ad875e735 fix(RN logging): sync with logging_config.js (#2382) 2018-01-17 10:59:48 -08:00
Saúl Ibarra Corretgé 6f93424d7c [RN] Use the "email" keyboard for the email field 2018-01-10 14:30:34 +01:00
Saúl Ibarra Corretgé 292f3ab1bd [Android] Fix crash if settings activity cannot be opened
The documentation states this is possible, so make sure we handle such errors.

Ref:
https://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DETAILS_SETTINGS
2018-01-09 13:12:53 -06:00
Boris Grozev a3cb081609 fix: Fixes an exception when the chat button and shortcut are clicked. 2018-01-09 10:36:55 -08:00
bgrozev 259004b8bf fix: Fixes the user ID read from JWT. (#2366) 2018-01-08 11:27:08 -06:00
zbettenbuk 05a492241f Fix local participant details on web 2018-01-05 12:58:58 -06:00
hristoterezov a357b0cf14 feat(notification): Add suboptimal browser exp notification. 2018-01-04 15:57:17 -06:00
Boris Grozev c7714959e6 feat: Passes the environment type and subproduct to the analytics handler constructor. 2018-01-04 13:12:48 -06:00
Boris Grozev e898527294 feat: Passes the "group" from JWT to the analytics handler constructor. 2018-01-04 13:12:48 -06:00
zbettenbuk bfcd34358b [RN] Add app-settings feature
[RN] Fix PR feedbacks, write persistency docs
2018-01-04 12:53:29 -06:00
Saúl Ibarra Corretgé 178c8e02ff [RN] Disable the XHR backend on mobile
All language assets will need to be bundled.
2018-01-03 19:18:12 -06:00
bgrozev 43ac039fd6 fix: Adapts to changes in lib-jitsi-meet. (#2354) 2018-01-03 16:07:39 -08:00
bgrozev 090f2f9ccb Restructures the analytics events (#2333)
* ref: Restructures the pinned/unpinned events.

* ref: Refactors the "audio only disabled" event.

* ref: Refactors the "stream switch delay" event.

* ref: Refactors the "select participant failed" event.

* ref: Refactors the "initially muted" events.

* ref: Refactors the screen sharing started/stopped events.

* ref: Restructures the "device list changed" events.

* ref: Restructures the "shared video" events.

* ref: Restructures the "start muted" events.

* ref: Restructures the "start audio only" event.

* ref: Restructures the "sync track state" event.

* ref: Restructures the "callkit" events.

* ref: Restructures the "replace track".

* ref: Restructures keyboard shortcuts events.

* ref: Restructures most of the toolbar events.

* ref: Refactors the API events.

* ref: Restructures the video quality, profile button and invite dialog events.

* ref: Refactors the "device changed" events.

* ref: Refactors the page reload event.

* ref: Removes an unused function.

* ref: Removes a method which is needlessly exposed under a different name.

* ref: Refactors the events from the remote video menu.

* ref: Refactors the events from the profile pane.

* ref: Restructures the recording-related events.

Removes events fired when recording with something other than jibri
(which isn't currently supported anyway).

* ref: Cleans up AnalyticsEvents.js.

* ref: Removes an unused function and adds documentation.

* feat: Adds events for all API calls.

* fix: Addresses feedback.

* fix: Brings back mistakenly removed code.

* fix: Simplifies code and fixes a bug in toggleFilmstrip

when the 'visible' parameter is defined.

* feat: Removes the resolution change application log.

* ref: Uses consistent naming for events' attributes.

Uses "_" as a separator instead of camel case or ".".

* ref: Don't add the user agent and conference name

as permanent properties. The library does this on its own now.

* ref: Adapts the GA handler to changes in lib-jitsi-meet.

* ref: Removes unused fields from the analytics handler initializaiton.

* ref: Renames the google analytics file and add docs.

* fix: Fixes the push-to-talk events and logs.

* npm: Updates lib-jitsi-meet to 515374c8d383cb17df8ed76427e6f0fb5ea6ff1e.

* fix: Fixes a recently introduced bug in the google analytics handler.

* ref: Uses "value" instead of "delay" since this is friendlier to GA.
2018-01-03 13:24:07 -08:00
zbettenbuk d08bbae770 [RN] Add proper locale support to MomentJS 2018-01-03 10:13:15 -06:00
Leonard Kim 698ec1e2d7 Revert "feat(avatars): use initials service for getting images (#2312)"
There is more avatar work coming down the line for mobile,
which should also affect web, assuming the same getAvatarURL
helper will be used. As such, instead of continuing to
support the initials service and tweaking UI, revert to
make way for the future avatar work.

This reverts commit 2ea5ad68a5.
2017-12-28 14:17:33 -06:00
Leonard Kim e217c172f8 ref(toolbar): re-wrap buttons for torture tests
The inline classes for the toolbars were re-arranged
to fix non-rounded corners in the always-on-top window's
toolbar. However, those classes were also used by the
torture tests as a way to find stable elements that will
not get blown away by a react re-render. So re-wrap the
buttons with a div that will not get blown away,
add back the inline classes to those divs, and change
the CSS to round the corners in the always-on-top
window's toolbar.
2017-12-26 16:08:40 -06:00
virtuacoplenny 2ea5ad68a5 feat(avatars): use initials service for getting images (#2312)
* feat(avatars): use initial service for getting images

* squash: capitalize and minor refactor of string concat
2017-12-21 13:36:00 -06:00
Lyubo Marinov fb6f1bdba0 [RN] Accommodate iPhone X on the WelcomePage 2017-12-21 00:02:22 -06:00
Lyubo Marinov 25b130f8e8 [RN] Don't tint the children, tint the background only 2017-12-21 00:00:34 -06:00
Saúl Ibarra Corretgé ca78309427 Fix typo 2017-12-20 10:58:49 +01:00
Lyubo Marinov 65abd5efd4 [iOS] Synthesize IPv6 addresses closer to Apple's recommendation 2017-12-19 19:15:34 -06:00
Lyubo Marinov 1e0550c746 [RN] Add recent-list feature 2017-12-19 19:15:01 -06:00
Zoltan Bettenbuk 45c405de0e [RN] Add recent-list feature 2017-12-19 18:35:51 -06:00
Leonard Kim f0a180cf0c fix(display-name): listen for display name changes
Make sure participants in the redux store have updated names.
This will be needed for showing avatars with user initials.
2017-12-19 17:13:10 -06:00
virtuacoplenny 28013f6ffa ref(avatars): remove Avatar.js (#2289)
* ref(avatars): remove Avatar.js

- Rely on redux getting updated with new participant state
and any calls to getAvatarURL passing in the redux
participant state. This way the state within Avatar.js can
be removed.
- Clean up methods on UI.js. Because all state is in the
store, separate methods for updating the avatar aren't as
necessary. Instead centralize accessing of the avatar for
components outside of redux and centralize the call to
update avatars for non-react components.
- Controversial: cache a participant's avatarURL on the
participant state. Currently the participant's avatarURL
that is generated without jwt (which sets the avatarURL directly)
is not cached. Without cache, there can be many redundant
calls to APP.API.notifyAvatarChanged.

* Leverage middleware timing to diff avatars

One alternative implementation is to leverage middleware's
ability to intercept updates before and after redux has
upated and then compare avatarURLs.

* kill UI.getAvatarUrl

* profile button sets its own avatar url (solves update timing)

* remove calls to updating avatar outside of middleware

* update UI.js doc

* remove left over logic from initial implementation

* try to move local user fallback into selector func

* default to id 'local' in selector
2017-12-19 17:11:54 -06:00
Saúl Ibarra Corretgé 5640524647 [RN] Show an indication when connectivity problems occur
The video will switch to the avatar and be tinted with gray. On the large view,
a text message indicating the user has connectivity issues will be shown.
2017-12-19 09:10:58 -06:00
Saúl Ibarra Corretgé ac09233558 [RN] Add TintedView component
It's designed to cover a container and give it a "tint" by using a color and
opacity.
2017-12-19 09:10:58 -06:00
damencho 2f3ea1b458 [Android] Add module that provides getWiFiStats 2017-12-19 11:07:11 +01:00
hristoterezov d6c3ab64fa fix(aot): Unmount AlwaysOnTop to remove listeners (#2307) 2017-12-18 14:35:56 -08:00
Saúl Ibarra Corretgé 7001208d87 [RN] Adjust filmstrip ordering based on aspect ratio
When in wide aspect ratio,, show it with the local participant on top, and the
remote ones after, sorted by join order.
2017-12-14 12:36:03 -06:00
Saúl Ibarra Corretgé c05c8e0f1e [RN] Handle config loading errors
They will be stored in redux and the PageReloadOverlay will be displayed.

Note that this commit also introduces a subtle (and yet important!) change:
the location URL is now always set, regardless of the configuration loading or
not. This is needed in order for the retry logic to pick it up.
2017-12-12 22:59:04 -06:00
Saúl Ibarra Corretgé 87a87eebb9 [RN] Add reload overlay in case of connection / conference errors 2017-12-12 22:58:46 -06:00
Lyubo Marinov ad497fed7c Reduce duplication 2017-12-12 21:58:33 -06:00
Saúl Ibarra Corretgé 0f6243ee88 feat(overlays): CallOverlay is not really an overlay
It's not supposed to go on top of everything, like an error would. It's tied to
a conference, so render it outside of the OverlayContainer.
2017-12-12 20:52:29 -06:00
Lyubo Marinov b39b6640b4 React & React Native Fragment-like 2017-12-12 20:52:29 -06:00
Saúl Ibarra Corretgé 870e6bbddc feat(overlays): render overlays outside of Conference
On web Conference is pretty much all there is, but on mobile we have the welcome
page and the blank page. If we fail to load config.js, for example we will still
be in the welcome page *and* we want to show an error overlay.
2017-12-12 20:52:29 -06:00
Lyubo Marinov b93bac5aa9 feat(room-lock): hide dialog when conference fails 2017-12-12 20:51:56 -06:00
Saúl Ibarra Corretgé c86895ae13 feat(room-lock): hide dialog when conference fails 2017-12-12 20:39:25 -06:00
Дамян Минков e28b847fb0 Updates config feature and whitelists options that can be overridden. (#2282)
* Removes unused config logic.

* Whitelists config options that can be overridden using the URL.

* Recorder login with credentials, not supported by externalconnect.

Jibri uses xmpp credentials to login, which is not supported by externalconnect, so we want to skip it till that is supported.

* Whitelist only config.js

* Extracts whitelisting in separate function.
2017-12-12 11:16:55 -08:00
virtuacoplenny 9b67e796bd ref(analytics): centralize all event names (#2272)
* ref(analytics): centralize all event names

* squash: fix typo and alpha ordering

* squash: rename file to AnalyticsEvents to parallel lib-jitsi-meet
2017-12-11 12:48:32 -06:00
Lyubo Marinov a5538adf8a [RN] Add a timeout for loading the configuration 2017-12-05 21:07:15 -06:00
Saúl Ibarra Corretgé 38b645bc27 [RN] Add a timeout for loading the configuration 2017-12-05 17:08:10 -06:00
damencho 67ac0e8b8a Updates the unsupported mobile browser page. 2017-12-05 09:52:44 -06:00
Leonard Kim b258a9fc5e ref(css): move aui css to jitsi-meet 2017-12-05 08:50:13 -06:00
Дамян Минков 9ddc5a0e42 Skips empty invites for video rooms. (#2251) 2017-12-04 20:59:28 -08:00
hristoterezov d79995e14c fix(aot): Toolbar styles (#2252)
Rounded corners on the first and last buttons. Size of the hangup button
on hover.
2017-12-04 20:23:51 -08:00
hristoterezov 5ffcaca649 feat(aot): Handle video not available use cases (#2242) 2017-12-04 19:27:17 -08:00
Leonard Kim c9b54845d9 ref(settings): convert panel to react
The goal is to reduce usage on atlassian/aui. New components
have been created to display the settings panel. Language
selection will reach into i18n for state whereas moderator
options will keep state in redux.
2017-12-04 16:19:18 -06:00
Lyubo Marinov 0eafee2a95 feat(errors): fix error handling for connection and conference 2017-12-04 16:01:28 -06:00
Saúl Ibarra Corretgé de0d69a20e feat(errors): fix error handling for connection and conference
Properly handle errors while connecting or joining a conference. Prior to this
patch, only errors on established conferences / connections were saved to the
redux store.
2017-12-04 15:52:52 -06:00
hristoterezov eae9ddabad fix(external_api): fire videoConferenceLeft event on unload (#2243) 2017-12-04 10:33:58 -08:00
Lyubo Marinov 569b3547c8 Upgrade NPM dependencies/packages: react-native 0.50 2017-12-04 00:45:18 -06:00
Lyubo Marinov d8bc26a8ea Upgrade NPM dependencies/packages: ESLint 2017-12-04 00:21:01 -06:00
Lyubo Marinov dda4d7a99e feat(overlays): switch to flow Props 2017-11-29 22:13:24 -06:00
Saúl Ibarra Corretgé 19702671f6 feat(overlays): switch to flow Props 2017-11-29 21:52:39 -06:00
yanas a9b8f49995 Add user id to analytics if provided in jwt 2017-11-29 10:36:57 -06:00
Lyubo Marinov 2306e26287 [RN] Fix assigning Dialog state 2017-11-29 10:21:49 -06:00
Saúl Ibarra Corretgé 3633f2aac5 [RN] Fix assigning Dialog state
75bf7638b3 introduced this regression, state must
be assigned as an object, even though one would think it's automagically
initialized to an object. Oh well!
2017-11-29 10:18:32 -06:00
Saúl Ibarra Corretgé c320540fa3
Merge pull request #2227 from jitsi/mobile_testing
feat: add more accessibility labels
2017-11-29 15:20:19 +01:00
Lyubo Marinov 75bf7638b3 ref: define state and property types (2) 2017-11-28 22:03:00 -06:00
paweldomas 379bad0ce6 ref: define state and property types 2017-11-28 20:36:02 -06:00
Leonard Kim 2becfd026b fix(device-selection): add proptypes shim for popup
AtlasKit is not fully compatible with React 16. One problem
is PropTypes will not be defined on the React object. So,
add the prop-types shim to the popup bundle.
2017-11-28 15:45:56 -06:00
paweldomas cd48ee3dbf feat: add more accessibility labels
Adds more accessibility labels required for mobile automated testing.
2017-11-28 12:28:37 -06:00
Lyubo Marinov e4ed02815f Coding style: no runtime-dependent global values 2017-11-27 20:55:45 -06:00
Lyubo Marinov d1e5e6b93b Coding style: consistency, jsdocs
These modification are not necessarily directly related to the
containing PR, I merely saw them while reviewing the containing PR.
2017-11-27 17:45:17 -06:00
Saúl Ibarra Corretgé 38629b437d feat(overlays): refactor logic for selecting current overlay
Do the selection in mapStateToProps so the container itself doesn't need to
receive all the props that each overlay needs.

Each overlay is responsible for fetching their own props and for providing a
"needsDisplay" static method wich will be called with the full redux state and
should return true if the overlay needs displaying.

Also eliminate duplicated state keeping: the connection and conference error
states can be fetched from their respective base features.
2017-11-27 17:45:11 -06:00
Saúl Ibarra Corretgé d0859b3ce1 feat(conference): store conference errors in redux 2017-11-27 17:45:11 -06:00
virtuacoplenny 4ead402388 spike: feat(notifications): prioritize based on type (appearance) (#2188)
* feat(notifications): prioritize based on type (appearance)

* squash: add return description to doc
2017-11-27 10:47:01 -06:00
Saúl Ibarra Corretgé c51d351694
Merge pull request #2205 from virtuacoplenny/lenny/progress-bar-react
ref(overlay): convert progress bar to react
2017-11-23 15:35:27 +01:00
Leonard Kim bb45f76a7a fix(conference): initialize UI features on CONFERENCE_JOINED
Initializing UI features, like keyboard shortcuts, by chaining
onto APP.conference.init is not safe because init can fail,
skipping the initializing of UI features. This can happen when
the room is locked and then a failure event is dispatched into
middleware. I couldn't find a place to properly chain onto
in the APP.conference.init promise chain, primarily due
to the flow continued within middleware, so instead I
leveraged an existing listener for CONFERENCE_JOINED.
2017-11-22 13:28:04 -06:00
virtuacoplenny 03e68b0e4b feat(video-quality): hide if recorder or interfaceConfig specified it (#2166) 2017-11-22 11:18:08 +01:00
Leonard Kim f0d3abffc5 ref(overlay): convert progress bar to react 2017-11-21 14:45:43 -08:00
Дамян Минков 7b1b873b6e VideoSIPGW updates (#2201)
* Adds initial documentation for sipgw jibri.

Also explains enabling the people search service and the request/response that are made around sipgw jibri service.

* Fixes add people dialog to invite users and rooms.

No invitation is sent when there is nobody to invite.

* Reuse some recording strings, by using arguments.

* Make sure web also dispatches CONFERENCE_WILL_JOIN.

* Introduces new feature videosipgw.

* Fixes lint errors.

* Renames methods to use people, chatRooms and videoRooms.

* Updates to latest lib-jitsi-meet (dc3397b18b).
2017-11-21 14:45:14 -08:00
Leonard Kim ef813fbf71 ref(notifications): replace NotificationWithToggle with Notification
It was decided along with the mute participant dialog reactification
that these types of warning messages should not be toggleable--that
they should simply always display because there is no undo action.
As such, the component NotificationWithToggle is no longer needed.
2017-11-21 11:55:45 -06:00
virtuacoplenny fe411398e3 fix(notifications): throttle and batch join notifications (#2182)
* fix(notifications): throttle and batch join notifications

Instead of directly calling to show a join notification,
go through a specific method. This method will queue
names for display while a throttled function pulls
the names and shows a notification.

* squash: remove unused translation key

* squash: use default display name

* squash: move into participant actions
2017-11-21 11:38:40 -06:00
Saúl Ibarra Corretgé 0aa377fcfc [RN] Ignore mute error if track is disposed
Refs: https://github.com/jitsi/lib-jitsi-meet/pull/648

It's possible for a track to be disposed but still on the redux store, before
the reducer removed it.
2017-11-21 11:13:35 -06:00
Saúl Ibarra Corretgé 81ac1bf4a5 [RN] Translate AudioRoutePickerDialog 2017-11-20 07:54:05 -06:00
Lyubo Marinov 78bc8121ff [RN] Fix "Error: Provided an image that is available locally already." 2017-11-17 13:33:04 -06:00
Lyubo Marinov 8fd91573fc Fix eslint & flow errors
Prepares for the latest eslint & flow-related npm packages which cause
these errors.
2017-11-16 12:27:54 -06:00
Leonard Kim 30be46326a fix(remote-menu): show volume slider whenever available 2017-11-15 16:25:44 -06:00
Leonard Kim 3d5fbefe7e fix(display-name): disable spell check on editing local name 2017-11-15 14:56:59 -06:00
Lyubo Marinov e7aff1d8e1 [RN] Group the secondary toobar buttons
Rearrange the ToolbarButtons in the secondary Toolbar in order to mostly
group the media-related ones such as the AudioRouteButton, the
switchCamera button, and the audio-only mode button.
2017-11-15 09:31:40 -06:00
Saúl Ibarra Corretgé f973a695d8 [RN] Add audio route picker
Due to the difference in nature, the iOS and Android implementations are
completely different:

iOS: MPVolumeView is used, which allows us to place a button which will launch a
native route picker provided by iOS itself. This view is different depending on
the iOS version, with the iOS 11 version being more complete.

Android: A completely custom component is used, which displays a bottom sheet
with the device categories, not devices individually. This is akin to the sheet
in the builtin dialer.
2017-11-15 09:31:40 -06:00
Saúl Ibarra Corretgé 8198e52b93 [RN] Add SimpleBottomSheet component
It emulates Android's BottomSheet in pure JavaScript. It's implemented as
another Dialog, so it can be used instead of one.

The implementation only supports text options with an associated icon, and an
optional 'selected' marker.
2017-11-15 09:31:40 -06:00
Lyubo Marinov 3033f7bc3d Coding style, consistency
We're already using the notion of _WILL_ in redux action types and
there's currently no compelling reason to introduce _BEGIN_ as well.
2017-11-15 09:23:22 -06:00
Lyubo Marinov decf9c4991 Add/fix JSDoc comments
While reviewing "[PREVIEW|RN]: Handle getUserMedia in progress" I
discovered JSDoc comments which could be improved. They are not
necessarily 100% related to the PR.
2017-11-14 15:42:00 -06:00
paweldomas f37a12c332 fix(base/tracks): handle GUM in progress
This commit adds extra actions/Redux state to be able to deal with
the GUM operation being in progress. There will be early local track
stub in the Redux state for any a local track for which GUM has been
called, but not completed yet.

Local track is considered valid only after TRACK_ADDED event when it
will have JitsiLocalTrack instance set.
2017-11-14 14:48:30 -06:00
Leonard Kim bff983d969 fix(style): rename the remaining AKButton import 2017-11-13 16:59:44 -06:00
Leonard Kim c2901808ca fix(button-group): use ButtonGroup from the Button package
That standalone ButtonGroup package has been deprecated.
The deprecation warning says to use the ButtonGroup component
from the Button package.
2017-11-13 16:59:44 -06:00
virtuacoplenny dc26b17d8b feat(keyboard-shortcuts): show help in a react dialog (#2148)
* feat(keyboard-shortcuts): show help in a react dialog

- Move shortcut help dom declaration to a react component
- Let open/close logic be handled by AtlasKit Dialog
- Remove static html for help from index.html
- Consolidate keyboard shortcut css

* squash: use lozenge for key styling

* squash: use different iteration style

* squash: update package-lock for lozenge
2017-11-13 16:58:00 -06:00
Дамян Минков 5dbabbe44a Hides call info and invite button in iAmRecorder mode. (#2154) 2017-11-10 11:43:40 -08:00
virtuacoplenny 5c464a7bda feat(audio-only): be able to lock a browser into capturing audio only (#2125)
* feat(audio-only): be able to lock a browser into capturing audio only

* squash: try to make string more clear about audio only support

* squash: final strings
2017-11-09 13:59:16 -08:00
yanas db71de97af Reactify mute remote participant (#2145)
* fix(remote-mute): Moves remote participant mute to react

* fix(translation): Removes unused strings

* [squash] Addressing comments
2017-11-09 09:23:17 -08:00
Lyubo Marinov 70d064cfa2 [RN] Fix React warnings 2017-11-07 17:28:28 -06:00
Lyubo Marinov 78d1fd10e2 [RN] Tap to toggle Toolbox 2017-11-07 17:27:58 -06:00
Lyubo Marinov 2b8a770163 [RN] Consistent margins for Filmstrip and Toolbox
With the introduction of wide and narrow layouts the margins of the
Filmstrip and the Toolbox became inconsistent. For example, the
Filmstrip's top in the wide layout was nearer to the top than the
secondary Toolbar.
2017-11-07 17:27:58 -06:00
Lyubo Marinov d0c079dba5 Coding style 2017-11-07 17:27:58 -06:00
Lyubo Marinov bce2a9fba9 [RN] Fix eslint & flow errors 2017-11-07 17:27:58 -06:00
paweldomas 3e9d26b525 ref(Toolbox.native): extract _renderToolbars 2017-11-07 08:28:18 -06:00
paweldomas 320cfe4745 ref(base/react/Container): return null for not visible
Now that we no longer hide the filmstrip it is fine to return null
instead of trying to hide with some tricks.
2017-11-07 08:28:18 -06:00
paweldomas c0a7d6144a feat: display filmstrip on the short side
Adds the ability to detect app area's aspect ratio on react-native
through the features/base/aspect-ratio.

Makes conference, filmstrip and toolbox react to the aspect ratio
changes and display filmstrip on the shorter side of the screen.
2017-11-07 08:28:18 -06:00
virtuacoplenny 6cda93d3c1 fix(1080p): video quality label shows hd at 720 (#2131)
The minimum resolution needed to show the HD label should be
720, not 1080. However, the requested video quality for
high quality should be 1080.
2017-11-03 17:21:33 -07:00
virtuacoplenny 510334fa7f ref(notifications): convert some dialogs to error or warning notifica… (#1991)
* ref(notifications): convert some dialogs to error or warning notifications

- Expand the configurability of the Notification component so warnings
  and errors can be displayed.
- Allow Notification to take in arbitrary text for the body.
- Rename defaultTitleKey to titleKey for consistency with descriptionKey.

* ref(notifications): remove openReportDialog method

openReportDialog is a wrapper around showError that adds
a logger statement. It is being called in one place only
so remove the method and have that one place call logger.

* ref(notifications): UI.showTrackNotWorkingDialog takes a boolean

Change UI.showTrackNotWorkingDialog so it takes a boolean
arguments instead of the entire track. A small refactor so
the method needs to know less.

* [squash] Fixes eslint errors

* WiP: Fixes desktop sharing error strings and adds support button

* [squash] Fix icons appearances

* [squash] Fix translate titles and messages

* [squash] fix(translation): Fixes incorrect password string

* [squash] fix(recording): Fixes recording message

* [squash] fix(warning): Turns some warnings to errors and makes support link optional.

* [squash] fix(translation): Addressing language comments

* [squash] Fixes jsdoc and formatting

* [squash] fix(noopener): Fixes window.open noopener

* [squash] fix(constants): Extract constants and refactor NotificationWithToggle

* [squash] fix(lang): Fixes camera and mic error titles

* [squash] fix(supportLink): Renames addSupportLink to hideErrorSupportLink
2017-11-03 14:05:03 -05:00
Leonard Kim 4a90e6dc71 fix(filmstrip): create a specific target for local video appending
Instead of targetting a div that contains multiple elements
and risking the elements appearing out of order, create a
specific div for local video to append to.
2017-11-02 14:24:29 -05:00
Saúl Ibarra Corretgé 922bbb1798 [iOS] use display: 'none' to hide elements (#2128)
* [iOS] use display: 'none' to hide elements

No, it still doesn't work properly on some Android devices, sigh.
2017-11-02 10:43:32 -05:00
paweldomas b74bede0e7 feat(web/RN): update React to v16 and React Native to 0.49 2017-11-02 14:32:35 +01:00
paweldomas e520319af2 fix(redux/functions): fix typo
The intention of the code is (1) to return target if none of the setters lead
to an actual change, (2) to not modify target, and (3) to do it with a 1
copyOnWrite at most.
2017-11-02 11:04:54 +01:00
paweldomas dc24782a2c fix(external-api/middleware): invalid toString call
The intention was to override 'this' argument of 'Error.toString'.
2017-11-02 10:56:48 +01:00
virtuacoplenny 2d9ce2486e feat(1080p): pass new-style constraints to createLocalTracks (#2087)
The lib will accept new style constraints and use those
to capture audio/video. By defining the constraints in
config, there is greater flexibility for defining
and changing constraints.
2017-10-31 17:08:07 -07:00
Leonard Kim 92dbdade39 fix(filmstrip-only): set width for toolbar popovers
The popovers in filmstrip only are displaying thinly.
As a quick workaround, set a width on them. There
should only be one anyway, which shows up when
talking while muted.
2017-10-31 14:42:16 -05:00
Saúl Ibarra Corretgé 561d1909ca Revert "misc: remove duplicated declarations"
This reverts commit 7e831117b6.
2017-10-30 16:24:11 +01:00
Saúl Ibarra Corretgé 7e831117b6 misc: remove duplicated declarations 2017-10-30 14:07:05 +01:00
hristoterezov 178235513b fix(DesktopPicker): Issues with selection (#2113) 2017-10-27 10:25:28 -07:00
Lyubo Marinov 499ee7985b [RN] Fix redux state cleanup
The preceding commit "fix(auth.native): trigger conference left on
cancel" did not correctly clean the redux state up on CONFERENCE_LEFT.
2017-10-24 13:58:08 -05:00
paweldomas dedd10c62a fix(auth.native): trigger conference left on cancel
Triggering the 'conference left' action when the wait for owner dialog
is dismissed will let the Call Kit implementation end the call, after
a recoverable conference failed event was emitted.

Also fixes conference state reduction when 'conference left' is emitted
by room lock or auth features where the conference has not been joined
yet.
2017-10-24 12:38:37 -05:00
hristoterezov a4e7f3d992 ref(strophe): Remove and cleanup all strophe related code.
Everything strophe related is now handled in lib-jitsi-meet project.
2017-10-23 16:27:30 -05:00
Saúl Ibarra Corretgé 23550d377e feat(dark-theme): fix breakage on mobile
e09949be9f introduced the dark theme globally, but
it only applies to web, so move the logic to App.web.js
2017-10-23 09:12:31 -05:00
damencho ade5290013 Fixes changing device unmutes you in a conference. 2017-10-20 17:25:44 -05:00
yanas e09949be9f feat(dark-theme): Applies dark theme on inline-dialogs, tooltips, flags and more 2017-10-20 15:29:16 -05:00
virtuacoplenny d3e8856896 Merge pull request #2094 from jitsi/device_selection_popup_error
Fix device selection popup
2017-10-20 13:15:31 -07:00
hristoterezov 96efa7759b fix(analytics): analytics undefined error due to circular dependency 2017-10-20 14:39:02 -05:00
virtuacoplenny 20d140a3ce Merge pull request #2090 from jitsi/desktop_picker_dialog
feat(desktop-picker): Add spinner and disable button if sources aren't initialized.
2017-10-20 12:37:30 -07:00
hristoterezov c7b0028652 feat(desktop-picker): Add spinner and disable button if sources aren't initialized. 2017-10-20 13:52:48 -05:00
Lyubo Marinov 6f0fe06ba6 [RN] No CallKit failure on recoverable errors 2017-10-19 13:29:25 -05:00
Lyubo Marinov 4f2346aac9 [RN] CONFERENCE_FAILED with AUTHENTICATION_REQUIRED is recoverable
The feature authentication affords recovery from CONFERENCE_FAILED
caused by AUTHENTICATION_REQUIRED. (Like the feature room-lock afforded
recovery from CONFERENCE_FAILED caused by PASSWORD_REQUIRED.)
2017-10-19 13:25:44 -05:00
Lyubo Marinov 8948c837d3 Coding style 2017-10-18 13:21:46 -05:00
Lyubo Marinov ce1a8e7567 [RN] Don't tell everyone we're called "me"
Recently/as part of the work on taking into account the user defined by
JWT, the local participant (on mobile) started telling the remote
participants that he/she had the display name "me". Obviously, that's
incorrect. Do not store the default display name in redux. While it may
be argues that redux is the place for all states, base/participants and
the name property of Participant is not meant to be that display name
because that is being sent to remote participants, the default name
needs to be internationalized, etc. So it's better to not store the
default display name at this time at all because it's not used by mobile
anyway and Web already deals with remote participants who don't share
their display names.
2017-10-18 13:15:49 -05:00
virtuacoplenny 095e4d7aa6 Merge pull request #2078 from jitsi/contactlist_displayname
fix(ContactListPanel): default display name
2017-10-18 09:12:47 -07:00
hristoterezov 0b50578de9 style(analytics): sendEvent -> sendAnalyticsEvent 2017-10-17 19:33:32 -05:00
Lyubo Marinov 5e01abf6fb Flow, coding style 2017-10-17 17:12:39 -05:00
Lyubo Marinov 0205b9f49a Remove obsolete source code 2017-10-17 17:12:39 -05:00
Lyubo Marinov a561d4f302 [RN] CONFERENCE_LEFT upon canceling PasswordRequiredPrompt 2017-10-17 17:12:39 -05:00
paweldomas 8bddaeb6d7 fix(ContactListPanel): default display name 2017-10-17 14:17:27 -05:00
damencho c3e42e0162 Adds application name to the initJitsiConference options. 2017-10-16 16:35:26 -05:00
hristoterezov 969f5d67ab feat(eslint): Enable for non react files 2017-10-16 14:36:29 -05:00
Lyubo Marinov 003eb68e28 Flow, coding style 2017-10-13 14:34:09 -05:00
paweldomas 8a4e6a7ec0 feat: override email, display name and avatar on mobile
Will override email, display name and avatar URL with the values
provided in 'context.user' structure of the JWT token.

Settings will no longer be used to retrieve local display name,
email and avatar URL. Now those values will be obtained from
the /features/base/participants Redux state.

fix(jwt/middleware): use const for default name

fix: wrong default display name on web

ref(base/participants): remove getDisplayName functions

ref(jwt): do not accept unknown user fields
2017-10-13 14:31:44 -05:00
hristoterezov 0eddef4d62 feat(mute): Add analytics and console logs for audio/video mutes 2017-10-13 09:50:48 -05:00
hristoterezov df1437f018 ref(analytics): Use analytics from features/analytics 2017-10-13 09:50:48 -05:00
hristoterezov a3a871d4b3 fix(lib-jitsi-meet): Use the exported constants 2017-10-13 09:50:48 -05:00
hristoterezov f050e7026d fix(media_actions): remove unused actions 2017-10-13 09:50:48 -05:00
Saúl Ibarra Corretgé 3c3b05e3ea Add ability to disable h264 (#2061)
* doc: document disableH264 option

* [RN] Override disableH264 config option

We never want it disabled on mobile.
2017-10-12 15:42:55 -07:00
Lyubo Marinov da03b49754 Flow, coding style 2017-10-12 14:59:11 -05:00
paweldomas 122be9e0e0 ref: move 'jwt' feature to 'base' 2017-10-12 14:43:09 -05:00
Leonard Kim 887e1b6828 ref(info): be explicit when opening the dialog with a timeout
Instead of assuming the initial info dialog open should auto
close, explicitly call opening of the dialog with a flag for
auto closing. This better facilitates the auto close timeout
being set at any time.

The changes led to refactoring out state in the InfoDialogButton
in preference for always clearing the timeout instead of
first checking for interaction before clearing.
2017-10-11 15:51:58 -05:00
Leonard Kim f539240840 fix(info): show dialog after joining the conference
Delay showing the dialog until after joining the conference
instead of as soon as possible. This resolves a few issues.
One is the dialog displaying right before the permissions
overlay is shown. Another is that logically it does not
make sense to show the invite options when unable to invite.
It also sidesteps the initial react UI bootstrapping that
can cause race conditions with toolbar re-renders causing
misalignment. Lastly, it prepares prematurely for what I
assume will be changes for when the info dialog will
actually be shown automatically.
2017-10-11 15:51:58 -05:00
Leonard Kim 323d38ac94 ref(conference): move mousemove handler to react 2017-10-11 15:51:58 -05:00
damencho 90451a640c Fixes sending logs to callstats.
When _setLoggingConfig is invoked for the first time old and new config
are equal and _initLogging is not called. Currently, there is no way to
detect when the first time we call it is. We could use APP.logCollector
but it should go away at some point in the future.
2017-10-11 15:04:22 -05:00
Saúl Ibarra Corretgé 9452f06b27 [RN] Use JWT callee name in CallKit
Fallback to the room name otherwise. This allows us to have better entries in
the phone history.
2017-10-11 13:05:18 -05:00
Saúl Ibarra Corretgé 20a6a61b45 [iOS] Add icon for CallKit in-call UI 2017-10-11 09:15:44 -05:00
Leonard Kim fafffb519b fix(filmstrip-only): prevent stats display 2017-10-10 12:47:19 -05:00
Saúl Ibarra Corretgé e25c38d716 Merge pull request #2045 from saghul/fix-fullscreen
[RN] Fix setting full-screen when joining a conference
2017-10-09 13:14:17 -05:00
Saúl Ibarra Corretgé d57b0547f3 [RN] Fix setting full-screen when joining a conference
HIDE_DIALOG happens between WILL_JOIN and JOINED so get the joining conference
from the state instead of the action.
2017-10-09 11:13:01 -05:00
Lyubo Marinov 2d73e9ace4 Flow, coding style 2017-10-09 10:39:31 -05:00
Saúl Ibarra Corretgé bb39ffe562 [RN] Fix selecting the local participant in the large view
Never show the local participant in the large view unless it's the only
participant.

This fixes 2 issues:

- selecting the local participant when the camera permission wasn't granted
- selecting the other participant when they join a 1-1 call with video muted
2017-10-09 10:39:31 -05:00
virtuacoplenny 5c819c7ffd Merge pull request #2043 from jitsi/fix-shared-video-popup
fix(defaultToolbarButtons): Fixes mute popup warning
2017-10-06 21:56:16 -07:00
yanas dfe4e5e3a1 fix(defaultToolbarButtons): Fixes mute popup warning
Fixes exception when trying to unmute in the scenario, where someone else is sharing a video with you.
2017-10-06 17:13:49 -05:00
Lyubo Marinov 5a5f6816c6 [RN] Leave Conference on room-lock "Password required" cancellation 2017-10-06 15:38:00 -05:00
Lyubo Marinov 2eb36c4053 Flow, coding style 2017-10-06 15:26:49 -05:00
Lyubo Marinov d4d2cb4aad [RN] No CONFERENCE_FAILED in SDK for recoverable errors 2017-10-05 13:25:17 -05:00
Lyubo Marinov c98e7a204c CONFERENCE_FAILED error as object 2017-10-05 13:25:17 -05:00
Lyubo Marinov 3d32c2de89 [RN] Secure entry, no automatic correction for room-lock passwords 2017-10-05 13:25:17 -05:00
Lyubo Marinov 7a7abdac2f [RN] Fix the submission of room-lock Dialogs 2017-10-05 13:25:17 -05:00
Lyubo Marinov f53c79ab24 Flow, coding style 2017-10-05 13:25:17 -05:00
Leonard Kim 4c00d39bf2 fix(info): use openDialog to open AddPeopleDialog
openAddPeopleDialog() got removed so instead call openDialog
with the AddPeopleDialog.
2017-10-04 09:58:02 -05:00
Lyubo Marinov c2ca345dec [RN] Fix TypeError that getDefaultButtons is not a function 2017-10-03 17:26:13 -05:00
Lyubo Marinov 1834fc63d2 Fix incorrect React Component state assignment 2017-10-03 14:43:05 -05:00
Lyubo Marinov 5561a9c031 Partially prepare for eslint-plugin-flowtype 2.37.0 2017-10-03 14:41:54 -05:00
bbaldino 1ef3e4b7dc Merge pull request #2024 from virtuacoplenny/lenny/no-resolution
ref(stats): do not modify stats object from lib
2017-10-03 10:50:39 -07:00
yanas 86fcfcc535 WiP(invite-ui): Initial move of invite UI to invite button (#1950)
* WiP(invite-ui): Initial move of invite UI to invite button

* Adjusts styling to fit both horizontal and vertical filmstrip

* Removes comment and functions not needed

* [squash] Addressing various review comments

* [squash] Move invite options to a separate config

* [squash] Adjust invite button styles until we fix the whole UI theme

* [squash] Fix the remote videos scroll

* [squash]:Do not show popup menu when 1 option is available

* [squash]: Disable the invite button in filmstrip mode

* feat(connection-indicator): implement automatic hiding on good connection (#2009)

* ref(connection-stats): use PropTypes package

* feat(connection-stats): display a summary of the connection quality

* feat(connection-indicator): show empty bars for interrupted connection

* feat(connection-indicator): change background color based on status

* feat(connection-indicator): implement automatic hiding on good connection

* fix(connection-indicator): explicitly set font size

Currently non-react code will set an icon size on ConnectionIndicator.
This doesn't work on initial call join in vertical filmstrip after
some changes to support hiding the indicator. The chosen fix is
passing in the icon size to mirror what would happe with full
filmstrip reactification.

* ref(connection-stats): rename statuses

* feat(connection-indicator): make hiding behavior configurable

The original implementation made the auto hiding of the indicator
configured in interfaceConfig.

* fix(connection-indicator): readd class expected by torture tests

* fix(connection-indicator): change connection quality display styling

Bold the connection summary in the stats popover so it stands out.
Change the summaries so there are only three--strong, nonoptimal,
poor.

* fix(connection-indicator): gray background on lost connection

* feat(icons): add new gsm bars icon

* feat(connection-indicator): use new 3-bar icon

* ref(icons): remove icon-connection and icon-connection-lost

Both have been replaced by icon-gsm-bars so they are not
being referenced anymore. Mobile looks to have connect-lost
as a separate icon in font-icons/jitsi.json.

* fix(defaultToolbarButtons): Fixes unresolved InfoDialogButton component problem

* [squash]: Makes invite button fit the container

* [squash]:Addressing invite truncate, remote menu position and comment

* [squash]:Fix z-index in horizontal mode, z-index in lonely call

* [squash]: Fix filmstripOnly property, remove important from css
2017-10-03 11:30:42 -05:00
Lyubo Marinov dfebd692f3 eslint 4.8.0
ESLint 4.8.0 discovers a lot of error related to formatting. While I
tried to fix as many of them as possible, a portion of them actually go
against our coding style. In such a case, I've disabled the indent rule
which effectively leaves it as it was before ESLint 4.8.0.

Additionally, remove jshint because it's becoming a nuisance with its
lack of understanding of ES2015+.
2017-10-02 18:12:38 -05:00
virtuacoplenny 1996ac4e02 Merge pull request #2023 from jitsi/remote_menu_analytics
feat(remote_menu): Add analytics
2017-10-02 14:41:28 -07:00
Lyubo Marinov 4bf19d73fd [RN] Fix documentation comments
* Javadoc introduced @code as a replacement of <code> and <tt> which is
  better aligned with other javadoc tags such as @link. Use it in the
  Java source code. If we switch to Kotlin, then we'll definitely use
  Markdown.

* There are more uses of @code in the JavaScript source code than <tt>
  so use @code for the sake of consistency. Eventually, I'd rather we
  switch to Markdown because it's easier on my eyes.

* Xcode is plain confused by @code and @link. The Internet says that
  Xcode supports the backquote character to denote the beginning and end
  of a string of characters which should be formatted for display as
  code but it doesn't work for me. <tt> is not rendered at all. So use
  the backquote which is rendered itself. Hopefully, if we switch to
  Markdown, then it'll be common between JavaScript and Objective-C
  source code.
2017-10-01 01:35:19 -05:00
Leonard Kim eb1a44f5ba ref(stats): do not modify stats object from lib
This is more of a principle change than a necessary one.
In lib-jitsi-meet, when a getStats call finishes, the
stats are processed and first emitted (and received by
jitsi-meet) and then processed again for sending to
remote participants. Modifying the stats in place changes
the structure of stats before the second processing,
which maybe be unexpected.
2017-09-29 18:41:49 -07:00
hristoterezov 29d1d448f2 feat(remote_menu): Add analytics 2017-09-29 16:27:53 -05:00
virtuacoplenny cfe4564ab3 feat(info): automatically show the info dialog (#2018)
* ref(info): be able to open dialog through store

* feat(info): automatically show the info dialog

Conditions:
- Lonely call
- Has not opened the info dialog yet

* squash: change to show on start, hide later

* squash: update naming and comment
2017-09-29 15:27:23 -05:00
virtuacoplenny 802d347574 ref(contact-list): remove invite functionality (#2017)
* ref(contact-list): remove invite functionality

Removing becuase there is already a toolbar button dedicated
to opening the invite dialog. Now the contact list focuses
on showing current participants.

* squash: remove unused strings and styling

* squash: add plural to panel title
2017-09-29 13:29:44 -05:00
Lyubo Marinov 3b5ee2d4c6 [iOS] Add initial CallKit support 2017-09-29 12:00:13 -05:00
Saúl Ibarra Corretgé 8d11b3024e [iOS] Add initial CallKit support
This commit adds initial support for CallKit on supported platforms: iOS >= 10.

Since the call flow in Jitsi Meet is basically making outgoing calls, only
outgoing call support is currently handled via CallKit.

Features:
 - "Green bar" when in a call.
 - Native CallKit view when tapping on the call label on the lock screen.
 - Support for audio muting from the native CallKit view.
 - Support for recent calls (audio-only calls logged as Audio calls, others show
   as Video calls).
 - Call display name is room name.
 - Graceful downgrade on systems without CallKit support.

Limitations:
 - Native CallKit view cannot be shown for audio-only calls (this is a CallKit
   limitaion).
 - The video button in the CallKit view will start a new video call to the same
   room, and terminate the previous one.
 - No support for call hold.
2017-09-28 16:36:39 -05:00
Lyubo Marinov 2e2129fa44 Import PropTypes from prop-types
Prepare for React 16.
2017-09-27 16:24:53 -05:00
Lyubo Marinov 964061fa5c [RN] Make it easier to disable yellow and red boxes in Debug 2017-09-27 11:23:35 -05:00
Saúl Ibarra Corretgé b8a629ead6 [RN] Don't hardcode app name when sharing a room 2017-09-27 11:02:43 -05:00
Lyubo Marinov d521deecc4 Coding style 2017-09-26 23:39:30 -05:00
Saúl Ibarra Corretgé d03a815572 [RN] Add ability to start a call in audio-only mode 2017-09-26 23:39:30 -05:00
Lyubo Marinov 41c6759a23 Coding style 2017-09-26 23:39:30 -05:00
Saúl Ibarra Corretgé f62288ae17 feat(conference): add helper function to check for audio-only muted status 2017-09-26 23:39:30 -05:00
Leonard Kim eae3bead87 fix(toolbar): fix proptype warning
The implementation of ToolbarButtonWithDialog expects a
constructor function for now, not the object returned
from calling a constructor function.
2017-09-26 11:56:43 -05:00
virtuacoplenny 483e2ee202 feat(connection-indicator): implement automatic hiding on good connection (#2009)
* ref(connection-stats): use PropTypes package

* feat(connection-stats): display a summary of the connection quality

* feat(connection-indicator): show empty bars for interrupted connection

* feat(connection-indicator): change background color based on status

* feat(connection-indicator): implement automatic hiding on good connection

* fix(connection-indicator): explicitly set font size

Currently non-react code will set an icon size on ConnectionIndicator.
This doesn't work on initial call join in vertical filmstrip after
some changes to support hiding the indicator. The chosen fix is
passing in the icon size to mirror what would happe with full
filmstrip reactification.

* ref(connection-stats): rename statuses

* feat(connection-indicator): make hiding behavior configurable

The original implementation made the auto hiding of the indicator
configured in interfaceConfig.

* fix(connection-indicator): readd class expected by torture tests

* fix(connection-indicator): change connection quality display styling

Bold the connection summary in the stats popover so it stands out.
Change the summaries so there are only three--strong, nonoptimal,
poor.

* fix(connection-indicator): gray background on lost connection

* feat(icons): add new gsm bars icon

* feat(connection-indicator): use new 3-bar icon

* ref(icons): remove icon-connection and icon-connection-lost

Both have been replaced by icon-gsm-bars so they are not
being referenced anymore. Mobile looks to have connect-lost
as a separate icon in font-icons/jitsi.json.
2017-09-26 11:55:09 -05:00
Lyubo Marinov e08d240a89 [RN] Render bold text in WaitForOwnerDialog 2017-09-25 14:42:15 -05:00
Lyubo Marinov f9f194d6fe Coding style 2017-09-25 12:46:22 -05:00
Lyubo Marinov cfd6209a20 [Android] Work around fetch-induced app breakage 2017-09-25 12:46:22 -05:00
Lyubo Marinov 03d337612b [Android] Hardware back in Conference and Dialog 2017-09-25 12:33:35 -05:00
Leonard Kim 46b75e5178 ref(info): new component for showing meeting info 2017-09-25 08:42:00 -05:00
Lyubo Marinov 266d8f72c5 [RN] Reduce authentication actions 2017-09-25 00:23:15 -05:00
paweldomas 9ae26a087e feat(auth): add UPGRADE_ROLE_LOGIN_OK action 2017-09-25 00:09:25 -05:00
hristoterezov 66da77bcf5 fix(profile_button): unclickable 2017-09-24 21:50:30 -05:00
Lyubo Marinov 70de9a683f [RN] Prepare for LoadingIndicator in LoginDialog 2017-09-24 17:25:58 -05:00
Lyubo Marinov 4e0761a46a CONNECTION_FAILED error as object
Gradually, we exploded the error of CONNECTION_FAILED in multiple
redux state properties. The explosion makes maintenance harder because
the properties have to be updated in sync. Collect them in an object
resembling an Error instance.
2017-09-24 16:51:43 -05:00