Commit Graph

29 Commits

Author SHA1 Message Date
Saúl Ibarra Corretgé
609942654a fix(android) disable full-screen when screen-sharing
Fixes not being able to put the app in background mode easily on Android
13.

Fixes: https://github.com/jitsi/jitsi-meet/issues/13513
2023-09-04 19:21:20 +02:00
Saúl Ibarra Corretgé
ec9fcdf1cb RN refactor immersive mode (#13583)
* fix(android): refactor immersive mode
2023-07-19 12:00:47 +03:00
Robert Pintilii
dc037bc8dd ref(TS) Convert some native components to TS (#13307) 2023-05-09 12:10:46 +03:00
Robert Pintilii
05a79ec793 ref: Remove index files (#13154)
Fix imports
Convert some files to TS
2023-04-03 16:33:18 +03:00
Robert Pintilii
0b65acb528 ref: Remove some index files (#13151)
Fix imports
2023-04-03 13:49:19 +03:00
Robert Pintilii
9ac039a408 ref: Remove some index files (#13140) 2023-03-31 14:04:33 +03:00
Robert Pintilii
271ea8315b ref: Improve reducers TS (#12123) 2022-09-05 12:05:07 +03:00
Robert Pintilii
1010955393 ref: Convert some reducers to TS (#12065) 2022-08-26 12:54:16 +03:00
Calinteodor
7c523f3250 language(typescript) actionTypes.js -> actionTypes.ts (#10940)
* language(typescript) first ts component, added ts configurations, actionTypes.js are now ts files
2022-04-08 15:24:58 +03:00
Jean-François Alarie
927b40ec71 fix(rn,full-screen) make sure immersive mode respects the fullscreen flag 2021-04-09 14:05:16 +02:00
Jean-François Alarie
407021e258 feat(rn,flags) add fullscreen.enabled flag 2021-03-08 22:11:39 +01: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
0598e7369b ref: eslint-config-jitsi@1.0.3 2020-05-20 17:14:29 +02:00
Saúl Ibarra Corretgé
02131f3346 full-screen: fix not re-entering full-screen after dialog is shown
This has the side effect of showing the bottom navbar when the toolbox is open,
which is a nice thing since back is accessible.
2020-02-20 16:49:20 +01: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é
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
Bettenbuk Zoltan
8065cc0348 [RN] Remove unused code 2019-02-06 14:27:25 +01: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
paweldomas
bcb955ea72 ref(full-screen/middleware): use StateListenerRegistry
Use state listener to simplify the logic and not care about the actions
since the fullscreen flag is calculated from the current conference
state.
2018-05-30 16:29:27 +02:00
paweldomas
dbd1091364 ref: use getCurrentConference
Try to use the getCurrentConference function wherever the indention is
to check for the current conference.
2018-05-30 16:29:27 +02:00
Lyubo Marinov
e2cf7a788d [RN] Make full-screen more resilient on Android (Coding style: consistency) 2018-02-14 12:28:22 -06:00
Saúl Ibarra Corretgé
4757c1ebca [RN] Make full-screen more resilient on Android
On Android we go into "immersive mode" when in a conference, this is our way of
being full-creen. There are occasions, however, in which Android takes us out of
immerfive mode without us (the application / SDK) knowing: when a child activity
is started, a modal window shown, etc.

In order to be resilient to any possible change in the immersive mode, register
a listener which will be called when Android changes it, so we can re-eavluate
if we need it and thus re-enable it.
2018-02-13 15:00:36 -06:00
Saúl Ibarra Corretgé
7a9ff9975a [RN] Adjust Conference for the reduced UI mode 2018-02-13 11:59:12 -06: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
85a168d51b [RN] base/media is intent, base/tracks is reality 2017-08-04 16:07:48 -05:00
Saúl Ibarra Corretgé
d600504d85 [RN] Refactor video muting
Simplify the code by using a bitfied instead of a couple of boolean flags. This
allows us to mute the video from multiple places and only make the unmute
effective once they have all unmuted.

Alas, this cannot be applied to the web without a massive refactor, because it
uses the track muted state as the source of truth instead of the media state.
2017-08-04 16:07:48 -05:00
Saúl Ibarra Corretgé
0c16842e0d [RN] Fix full-screen mode when a dialog is opened on Android
When a dialog is opened on Android, full-screen mode is exited but we (the app)
know nothing about this. Make sure we re-enter full-screen mode once a dialog is
closed, if the conditions to be in such mode are still met.
2017-04-19 13:55:44 -05:00
Saúl Ibarra Corretgé
8fe3dce649 [RN] Add audio only mode for conferences
The behavior can be triggered with the toggleAudioOnly action, which is
currently fired with a button.

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

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

One aspect not handled in this patch is disabling the video mute button while in
audio only mode. The user should not be able to turn back video on in that case.
2017-04-05 15:07:34 -05:00
Saúl Ibarra Corretgé
c5eac63da1 [RN] Move all mobile only features to a subdirectory 2017-03-28 09:36:00 -05:00