Commit Graph

1201 Commits

Author SHA1 Message Date
Saúl Ibarra Corretgé b25caedce7 feat(eslint): fix 2 eslint warnings (#3268) 2018-07-17 08:08:22 -07:00
Leonard Kim 5d4a2e87f8 fix(device-selection): use persisted settings as default values if available 2018-07-16 20:38:04 -07:00
virtuacoplenny b9f28a1beb
fix(live-streaming): add beta tag to toolbar button (#3263) 2018-07-16 19:15:34 -07:00
Saúl Ibarra Corretgé 1ee71be961 [RN] Kill some dead code 2018-07-13 10:01:39 -05:00
Lyubo Marinov bfdfb5321c feat(App): refactor App and split it into BaseApp and App (continued)
There doesn't seem to be a strong need for the initialized React
Component state in BaseApp so remove/delete it.
2018-07-12 11:28:48 -05:00
Saúl Ibarra Corretgé dc246960df feat(App): refactor App and split it into BaseApp and App
BaseApp does all the heavy-lifting related to creating the redux store,
navigation, and so on.

App currently handles URL props and actually triggering navigation based on
them.
2018-07-12 11:28:19 -05:00
Saúl Ibarra Corretgé 3bfab7718f [RN] Refactor getting the default URL
Move it away from AbstractApp into an auxiliary function. In addition, introduce
a new `getServerURL` function which gets the configured server URL and defaults
to meet.jit.si as before.
2018-07-12 11:28:18 -05:00
Saúl Ibarra Corretgé 980648df4d feat(App): remove ability to specify an external redux store
It was never used in practice, and it would be very cumbersome to use, since it
would have to bcreated with all the middlewares and reducers we need. After
discussing this with Lyubomir, we are confident this is not going to be needed
so it can go.
2018-07-12 11:28:18 -05:00
Saúl Ibarra Corretgé f2f991e969 feat(App): move participant leaving logic to base/participants 2018-07-12 11:28:17 -05:00
Bettenbuk Zoltan 96a837801e [RN] Tint active speaker thumbnail 2018-07-12 09:43:29 +02:00
Lyubo Marinov c203215c54 core: refactor routing (continued) 2018-07-11 22:58:41 -05:00
Saúl Ibarra Corretgé 155e02bbfb core: refactor routing
Unfortunately, as the Jitsi Meet development evolved the routing mechanism
became more complex and thre logic ended up spread across multiple parts of the
codebase, which made it hard to follow and extend.

This change aims to fix that by rewriting the routing logic and centralizing it
in (pretty much) a single place, with no implicit inter-dependencies.

In order to arrive there, however, some extra changes were needed, which were
not caught early enough and are thus part of this change:

- JitsiMeetJS initialization is now synchronous: there is nothing async about
  it, and the only async requirement (Temasys support) was lifted. See [0].
- WebRTC support can be detected early: building on top of the above, WebRTC
  support can now be detected immediately, so take advantage of this to simplify
  how we handle unsupported browsers. See [0].

The new router takes decissions based on the Redux state at the time of
invocation. A route can be represented by either a component or a URl reference,
with the latter taking precedence. On mobile, obviously, there is no concept of
URL reference so routing is based solely on components.

[0]: https://github.com/jitsi/lib-jitsi-meet/pull/779
2018-07-11 22:58:41 -05:00
Bettenbuk Zoltan 5aee082bf9 [RN] Implement streaming on mobile 2018-07-11 15:13:16 -05:00
Saúl Ibarra Corretgé 453c4b99dc cleanup: drop polyfills which were required for IE11 2018-07-11 17:53:32 +02:00
Bettenbuk Zoltan 961e1d611f [RN] Only ask for calendar permission on user interaction 2018-07-11 17:17:24 +02:00
hristoterezov 9331b0870b fix(presence-label):styles 2018-07-09 20:22:43 -05:00
hristoterezov 00d1edcdef fix(jwt): import for mobile. 2018-07-09 20:22:43 -05:00
hristoterezov 769e782c6f feat(callee-info): Redesign. 2018-07-09 20:22:43 -05:00
Zoltan Bettenbuk 63c017f8e6 Fix persistency to handle default values too (#3228) 2018-07-06 11:03:16 -07:00
Bettenbuk Zoltan b48c897d9b [WEB] Move RecordButton to the new ToolBox abstraction layer 2018-07-03 11:08:37 +01:00
Bettenbuk Zoltan e59761baa2 Implement ToolboxItem features: disabled, tooltip with label 2018-07-03 11:08:37 +01:00
virtuacoplenny 84b589719f fix(connection): reload immediately on possible split-brain (#3162)
* fix(connection): reload immediately on possible split-brain

There isn't an explicit way to know when a split brain
scenario has happened. It is assumed it arises when an
"item-not-found" connection error is encountered early
on in the conference. So, store when a connection has
happened so it be calculated how much time has
elapsed and if the threshold has not been exceeded
then do an immediate reload of the app instead of
showing the overlay with a reload timer.

* squash: rename isItemNotFoundError -> isShardChangedError
2018-07-02 16:22:51 -05:00
Zoltan Bettenbuk 009eeccf3c
Merge pull request #3142 from virtuacoplenny/lenny/new-audio-output-icon
feat(device-selection): new icon for audio output
2018-06-29 14:50:46 +02:00
Zoltan Bettenbuk e01acd9cf0
Merge pull request #3187 from virtuacoplenny/lenny/cleanup-new-toolbox-css
ref(toolbar): remove use-new-toolbox class
2018-06-29 14:48:15 +02:00
Bettenbuk Zoltan ac63a0fa73 Calendar feature disabled state getter
This commit adds a state getter that considers checking the enabled/disabled state of the calendar feature, so then other features don’t have to do it manually.
2018-06-29 09:36:34 +01:00
Leonard Kim 98e3bcb691 feat(device-selection): new icon for audio output 2018-06-28 14:59:07 -07:00
Leonard Kim 880d3525db squash: pass class name into filmstrip 2018-06-28 11:06:10 -07:00
Leonard Kim c958c64ba8 ref(toolbar): remove use-new-toolbox class
Very likely I broke something subtle and I'm prepared to fix it.
2018-06-28 11:06:10 -07:00
Saúl Ibarra Corretgé acb3bd7ad7 feat(BrowserSupport): remove PluginRequiredBrowser
WebRTC plugin support has been axed, this is now dead code.
2018-06-28 13:55:12 +02:00
Saúl Ibarra Corretgé 7fcc95c9da feat(UnsupportedDesktopBrowser): recommend Edge, not IE 2018-06-28 13:55:12 +02:00
Saúl Ibarra Corretgé 87fa8de815 feat(sanity): axe IE and Temasys plugin support 🔥🔥🔥 2018-06-28 13:55:12 +02:00
Bettenbuk Zoltan 7164cd49e4 [RN] Implement Recording on mobile 2018-06-28 12:47:50 +02:00
Bettenbuk Zoltan 4ac367d403 [RN] Implement Labels on mobile 2018-06-28 12:47:50 +02:00
Bettenbuk Zoltan ffd0827354 [RN] Implement Notifications on mobile 2018-06-28 12:47:50 +02:00
paweldomas 67d7d4fc14 feat(RN): add a fatal error state which is a catch all
Adds a fatal error state on which will depend whether or not the reload
screen is to be displayed. It is to happen when a relevant fatal error
action is not claimed by any feature for error recovery (the recoverable
flag is not set).
2018-06-26 15:39:56 +02:00
virtuacoplenny 9a06d2bf52 ref(video-layout): consolidate connection status update handling (#3185)
- Instead of having 4 listeners for local connection status
  updates and 1 for remote, remove two of the redundant listeners.
- Instead of calling into 4 separate VideoLayout methods to update a
  participant's connection status, expose one handler.
2018-06-25 10:44:12 -07:00
virtuacoplenny 2951fefef9
ref(toolbar): change tooltip prop name to stop deprecation warning (#3186) 2018-06-25 09:31:41 -07:00
damencho 682169e44c Renames isBot -> isFakeParticipant. 2018-06-22 18:23:17 -05:00
Leonard Kim f035861617 ref(toolbar): allow OverflowMenuItem to show beta tag 2018-06-22 15:53:35 -05:00
Saúl Ibarra Corretgé 7b0a6a2ee5 [RN] Add ability to loop sounds 2018-06-22 14:34:01 +02:00
Saúl Ibarra Corretgé 333a0f5f90 [RN] Handle presence
Up until now, mobile was oblivious to participants' presence state. Presence
state handling is required (probably, amongst other things) for "call flows".
So, let's add it! This is done by gathering the presence state when a
participant first joins, and handling subsequent changes.
2018-06-22 12:22:12 +02:00
Saúl Ibarra Corretgé 47aa14e9f6 [iOS] Fix syncing muted state with CallKit
Fix the "mute ping pong" for once and for all. This patch takes a new approach
to the problem: it keeps track of the user generated CallKit transaction ations
and avoids calling the delegate method in those cases.

This results in a much cleaner and easier to understand handling of the flow: if
the delegate method is called it means the user tapped on the mute button. When
we sync the muted state in JS with CallKit the delegate method won't be called
at all, thus avoiding the ping-pong altogether.

In addition, make sure all CallKit methods run in the UI thread. CallKit will
call our delegate methods in the UI thread too, thsu there is no need to
synchronize access to the listener / pending action sets.
2018-06-22 11:25:09 +02:00
Saúl Ibarra Corretgé ec8ad6190d [iOS] Only update the matching local track data in CallKit 2018-06-22 11:25:09 +02:00
Saúl Ibarra Corretgé 42b85f73bd [iOS] Fix checking if a track is local in ithe CallKit middleware
Not all TRACK_ actions include the `local` attribute, so use the underlying
`jitsiTrack` to check it.
2018-06-22 11:25:09 +02:00
virtuacoplenny 2bd0f77671 Move a couple calls to update VideoLayout into the redux update flow (#3173)
* ref(video-layout): move middleware for TRACK_ADDED

* ref(video-layout): call mucJoined when redux knowns of conference join
2018-06-21 21:33:33 -07:00
bbaldino 11c9d5f0ef change the levels for each gsm bar color (#3174)
old values: 0-39% -> red, 40-69% -> yellow, 70%+ -> green
new values: 0-9% -> red, 10-29% -> yellow, 30%+ -> green
2018-06-21 17:30:19 -07:00
virtuacoplenny 7ee63a44c5 ref(info): use conference existence as trigger for autoshowing dialog (#3083)
* ref(info): use conference existence as trigger for autoshowing dialog

* squash: combine maybeShow checks, inheritdoc

* squash: flow type tweaks
2018-06-21 12:38:53 -05:00
Leonard Kim fecd138a3c fix(recording): red error text for google api errors 2018-06-20 23:09:43 -05:00
Hristo Terezov 1f8fa3b6d4 Refactor settings modal (#3121)
* feat(settings): setting dialog

- Move device selection, profile edit, language select, moderator
  options, and server auth into one modal with tabs.
- Remove side panel profile and settings and logic used to update
  them.
- Pipe server auth status into redux to display in the settings
  dialog.
- Change filmstrip only device selection popup to use the new
  stateless settings dialog component.

* squash: do not show profile tab if not guest

* squash: profile button not clickable if no profile to show

* squash: nits

* ref: Settings dialog.
2018-06-20 13:19:53 -07:00
paweldomas 675eea7b99 fix(base/conference): do not execute leave conference on web
On web CONFERENCE_FAILED handlers are not setting the 'recoverable'
flag thus any middleware which rely on those should not execute on web.
2018-06-20 10:58:57 -05:00