Commit Graph

188 Commits

Author SHA1 Message Date
paweldomas d3d5847605 feat: configurable quality levels for video height
Allows to adjust thresholds which control the video quality level
in the thumbnail view.

Changes the default behaviour to request the SD (360p) resolution only
when the thumbnails are at least 360 pixels tall and the height of
720 is required for the high quality level.

The thresholds can be configured with the 'videoQuality.minHeightForQualityLvl'
config property. Check the description in the config.js for more details.
2020-08-20 11:07:36 -07:00
Hristo Terezov 55175e2e95 fix(subject): set to ' ' after settings change. 2020-08-20 10:48:06 -05:00
Saúl Ibarra Corretgé ce812591f9 conference: fix not applying max recv constraints
They also need to be applied when changing conferences.
2020-07-09 08:40:56 +02:00
Saúl Ibarra Corretgé 7d513738d2 rn,flags: add ability to override resolution using a flag
Also, use the configured resolution to set it as the max received frame size.
2020-07-09 08:40:56 +02:00
paweldomas 811ee40d99 ref(constants): use 720 for the high quality level
720 is requested by default for the local video stream
and when using the quality slider the resolution would
be increased to 1080.

Note that this will limit the receive quality to 720 as well,
because both send and receive constraints are changed at
the same time when the quality slider is used.
2020-06-23 14:50:00 +02:00
Saúl Ibarra Corretgé f230fd4d04 subject: avoid sending an extra empty subject update
When setSubject is called too early we store it as pensing, but thanks to the
default parameter value, if undefined is passed to the function we'll store the
empty string.

This will trigger a needless update because undefined !== ''.
2020-06-18 14:52:17 +02:00
Saúl Ibarra Corretgé eed57e7999 subject: only try to update the subject when the rol;e changes
Skip processing any other participant updates.
2020-06-18 14:52:17 +02:00
damencho 929622b27c fix: Fixes setting subject from url.
There are occasions when role to moderator can change a little bit after joining the room, and initial try to set subject will silently be ignored if not moderator.
2020-06-16 12:44:44 -05:00
Saúl Ibarra Corretgé 6e679f952f redux: refactor loading of middlewares and reducers
Up until now we relied on implicit loading of middlewares and reducers, through
having imports in each feature's index.js.

This leads to many complex import cycles which result in (sometimes) hard to fix
bugs in addition to (often) breaking mobile because a web-only feature gets
imported on mobile too, thanks to the implicit loading.

This PR changes that to make the process explicit. Both middlewares and reducers
are imported in a single place, the app entrypoint. They have been divided into
3 categories: any, web and native, which represent each of the platforms
  respectively.

Ideally no feature should have an index.js exporting actions, action types and
components, but that's a larger ordeal, so this is just the first step in
getting there. In order to both set example and avoid large cycles the app
feature has been refactored to not have an idex.js itself.
2020-06-16 11:24:15 +02:00
Bettenbuk Zoltan 29dc63fbcb ref: merge prejoin with lobby 2020-06-09 18:10:43 +02:00
Bettenbuk Zoltan 475a2ae596 feat: lobby feature
The lobby feature adds the possibility to lock a meeting and only allow people in after virtually knocking and going through formal approval
2020-06-09 18:10:43 +02:00
Gabriel Imre 444e2b90df callstats: add siteID passing; sanitize confID path 2020-05-28 10:00:45 -05:00
Bettenbuk Zoltan 0598e7369b ref: eslint-config-jitsi@1.0.3 2020-05-20 17:14:29 +02:00
Vlad Piersec a45cbf41ef feat(prejoin_page): Add prejoin page 2020-05-04 12:49:35 +02:00
Jaya Allamsetty b5676c3729 feat(video-quality):control sender resolution based on user pref 2020-04-28 10:17:06 -04:00
Hristo Terezov 94a15914d0 fix(document.title): use URL decoded room name. 2020-04-25 10:27:47 -05:00
Saúl Ibarra Corretgé cb6fbb0f03 e2ee: add UI elements
* Add dialog to set the E2EE key
* Use the Redux action / middleware to update the key even when set through the
  hash parameter
* Cleanup URL after processing the key so it's not recorded in browser history
2020-04-16 20:25:56 +02:00
Bettenbuk Zoltan a46fd60788 fix: accented room name display 2020-03-31 14:16:21 +02:00
Hristo Terezov 31d9fb12c8
ref(Filmstrip): Optimize resizes. (#4992)
* ref(Filmstrip): Optimize resizes.

* fix(thumbnails): resize.

* fix(thumbnails): Issue with height 0, width 0.

* doc(Filmstrip): Improve JSDoc.
2020-01-24 16:28:47 +00:00
theunafraid c2cf09a2ca Add conference timer (#4958) 2020-01-13 17:12:25 +00:00
paweldomas 6c3968a434 ref: remove features/base/conference -> /app cycle
Move call to reloadNow() on CONNECTION_FAILED to
the ./features/app/middleware to avoid importing higher order feature
from the lower level one.
2020-01-07 17:44:39 +00:00
Jaya Allamsetty 0a64bf2068 feat(presenter): add Presenter Mode
- Adds the ability to share video as a "PiP" when screenshare is in progress.
- Add a method for creating a local presenter track.
- Make sure isLocalVideoTrackMuted returns the correct mute state when only screenshare is present.
- Make sure we get the updated window size of the window being shared before painting it on the canvas.
- Make sure we check if the shared window has been resized
2019-11-26 11:57:03 +01:00
Bettenbuk Zoltan 8f0a12016a fix: return room lock conference, when there is no other 2019-11-20 13:28:47 +01:00
Bettenbuk Zoltan 8bd0da886e feat: safe decodeURIComponent 2019-11-15 15:18:20 +01:00
Дамян Минков 50f4796144
Adds an option to set email through iframe API init and to stats. (#4842)
* Adds an option to set email through iframe API init and to stats.

* Simplifies configuring email and displayName in stats.

Removes enableStatsID as not needed as when off we are sending as callstats id xmpp resource which is unique per call and id must be something that sticks between calls (callstatsUsername).

* Adds email and displayName in stats config for mobile.

* chore(deps): Updates lib-jitsi-meet to latest dd31f0a.

* Removes enableStatsID from config and whitelist.
2019-11-12 13:37:54 +00:00
Bettenbuk Zoltan 6e10ca5dd2 fix: chat error message 2019-10-09 18:35:09 +02:00
Bettenbuk Zoltan 13d78d6b49 fix: utf-8 room name case sensitivity 2019-10-08 10:35:19 +02:00
virtuacoplenny 55ff9dbe80
feat(api): expose method for playing touch tones (#4584) 2019-08-30 14:17:22 -07:00
Bettenbuk Zoltan c1598b7376 feat: make display name prompt platform independent 2019-08-26 22:20:22 +02:00
Saúl Ibarra Corretgé 5a934c071a logging: use individual, names loggers
React Native doesn't define __filename nor __dirname so do it artisanally. In
addition, this helps with centralizing the configuration passed to loggers.
2019-08-23 10:57:38 +02:00
Saúl Ibarra Corretgé 467c9d36cf audio-only,lastn: move audio-only and last N handling to standalone features
This refactors all handling of audio-only and last N to 2 features in preparation
for "low bandwidth mode".

The main motivation to do this is that lastN is a "global" setting so it helps
to have all processing for it in a single place.
2019-08-02 15:54:47 +02:00
Saúl Ibarra Corretgé 4d5332cadf rn,conference: log pin participant analytics events also on mobile 2019-07-30 17:11:43 +02:00
Saúl Ibarra Corretgé 5261f61110 conference: don't pin participants on the JVB
When a participant is pinned in the UI we then proceed to mark it as selected on
the JVB. This will make the participant part of the last N set and will receive
the highest (or configured highest) video quality.

Pinning a participant at the JVB level just makes sure it will be part of the
last N set.

Since only one participant can be pinned in the UI, there is no point in pinning
it at the JVB level, since selecting it already achieved the same result.
2019-07-30 17:11:43 +02:00
damencho 0e9e695251 Passes confID when initializing JitsiConference.
The confID is domain.com/RoomName or domain.com/tenant/RoomName, adds the tenant if any and also keeps the room name case.
2019-07-11 14:58:14 +01:00
virtuacoplenny 249dd7b8b8
fix(invite): decode the meeting name (#4411)
* fix(invite): decode the meeting name

* squash: try to make mobile join same encoded meeting name as web

* Decodes and generated texts for share and copy meeting info.

Decodes in all cases except when it contains a space, as it will generate wrong links when pasted/shared in external applications.
2019-07-10 10:27:11 -07:00
paweldomas 033aa0dd6e fix(base/conference/reducer): check if room is defined
This was hit on a corner case when ConnectionService will deny
the request to start the call. I am not sure, but it could have been
that the conference object has been disposed or closed or something
else, but the fact is that 'conference.room' was not defined and things
crashed. It is not safe to access conference's private field 'room'. It
is true JitsiConference doesn't follow the practice of marking this
field as private with the underscore '_', but it is not a public field.
2019-06-20 13:19:04 -05:00
Hristo Terezov a91b49c2c1 feat(reload): on offer / answer error. 2019-06-19 05:25:43 -07:00
Дамян Минков 6eb66b639e
Notify for kick and mute (#4328)
* Updates kick showing who kicked us.

* Notify participants that someone was kicked.

* Shows notification to user who is remotely muted.

* Updates the notification type.

* Muted by notification for mobile.

* Moves code to react and adds the kick notifications to mobile.

* Updates lib-jitsi-meet.
2019-06-17 16:00:09 +02:00
Saúl Ibarra Corretgé 579d291bca config: add ability to pass the subject as a URL parameter 2019-05-29 14:48:02 +02:00
Saúl Ibarra Corretgé 871026f4ba conference: clear the pending subject after it has been set 2019-05-29 14:48:02 +02:00
Saúl Ibarra Corretgé 9a8a070c62 rn: show conference subject if set 2019-05-29 14:48:02 +02:00
Saúl Ibarra Corretgé a4cf79c161 rn: fix losing audio if call is hangup too quickly
This PR changes the logic for connecting / disconnecting conferences. Instead of
doing it in mount / unmount events from the Conference component, it moves the
logic to the appNavigatee action.

This fixes a regression introduced in 774c5ecd when trying to make sure the
conference terminated event is always sent.

By moving the logic to appNavigate we no longer depend on side-effects for
connecting / disconnecting, and the code should be more maintainable moving
forward.

An improvement to this is the concept of sessions, which, while not tackled
here, was taken into consideration.
2019-05-23 15:16:31 +02:00
Saúl Ibarra Corretgé 774c5ecd18 rn: ensure the conference terminated event is always sent
Dear reader, I'm not proud at all of what you are about to read, but sometimes
life just gives you lemons, so enjoy some lemonade!

Joining a conference implies first creating the XMPP connection and then joining
the MUC. It's very possible the XMPP connection was made but there was no chance
for the conference to be created.

This patch fixes this case by artificially genrating a conference terminated
event in such case. In order to have all the necessary knowledge for this event
to be sent the connection now keeps track of the conference that runs it.

In addition, there is an even more obscure corner case: it's not impossible to
try to disconnect when there is not even a connection. This was fixed by
creating a fake disconnect event. Alas the location URL is lost at this point,
but it's better than nothing I guess.
2019-04-25 14:04:26 +02:00
virtuacoplenny c7013f5c4b
ref(follow-me): hook into redux (#3991)
Use subscribers to detect state change and emit those
out to other participants. Use middleware to register
the command listener.
2019-04-17 08:05:32 -07:00
paweldomas e839684ae9 fix(base/conference): tracks not added to the conference
If tracks are created while the conference is in the 'joining' state
they will never be added.
2019-03-27 10:06:59 +01:00
Saúl Ibarra Corretgé c025c7e132 flow: tame the beast
🔥🔥🔥
2019-03-21 14:47:55 +01:00
Saúl Ibarra Corretgé 0e92e73789 chore: use strings as action types
Using anything non-serializable for action types is discouraged:
https://redux.js.org/faq/actions#actions

In fact, this is the Flow definition for dispatching actions:

declare export type DispatchAPI<A> = (action: A) => A;
declare export type Dispatch<A: { type: $Subtype<string> }> = DispatchAPI<A>;

Note how the `type` field is defined as a subtype of string, which Symbol isn’t.
2019-03-21 14:47:55 +01:00
Hristo Terezov cb8e9eed5e feat(subject): UI 2019-03-12 23:03:58 +00:00
damencho fc129d9849 Adds setting subject and adding event on receiving such change. 2019-02-19 13:22:27 +00:00
Bettenbuk Zoltan 9f3ef43daa [RN] Add conference navigation bar 2019-02-06 14:27:25 +01:00