Commit Graph

200 Commits

Author SHA1 Message Date
Lyubo Marinov 8cd2bd272b Reduce direct read access to the features/base/participants redux state
As part of the work on fixing the problem with the multiplying
thumbnails, we've associated remote participant w/ JitsiConference.
However, there are periods of time when multiple JitsiConferences are in
the redux state (and that period is going to be shorted by
StateListenerRegistry). In order to give more control to the feature
base/participants, reduce the occurrences of direct access to the
features/base/participants redux state and utilize the feature's
existing read access functions. Which will allow us in the future to
enhance these functions to access participants which are relevant to the
current conference of interest to the user only.
2018-05-23 09:46:15 -05:00
Bettenbuk Zoltan df7b8e51fc [RN] Improve video switch style and remove react warning 2018-05-15 17:42:54 +02:00
Lyubo Marinov bd7c9473e7 [Android] Fix possible TypeError in multi-JitsiMeetView SDK consumers
If multiple JitsiMeetView instances are created (not necessarily
existing at once), it's possible to hit a TypeError when reading the
React Component props of the currently mounted App. Anyway, in certain
places we're already protecting against that out of abundance of caution
so it makes no sense to not protect everywhere.
2018-05-09 23:45:24 -05:00
zbettenbuk 959db3a665 Make web use the redux settings/profile 2018-05-09 15:20:22 +02:00
Lyubo Marinov 6a0de0ddde Coding style: consistency, formatting, naming 2018-05-07 10:05:37 -05:00
zbettenbuk b777322fdc [RN] Make the audio-video labels touchable 2018-05-07 10:05:22 -05:00
zbettenbuk 68608478f6 Refactor PagedList components to be independent from the lists it renders 2018-05-01 09:09:32 -05:00
hristoterezov f14095ecfc feat(deep_linking): add analytics
In order to be able to add analytics to the deep-linking pages the
lib-jitsi-meet initialization has been moved so it happens earlier.

The introduced `initPromise` will eventually disappear, once conference is
migrated into React and / or support for Temasys is dropped. At that stage, it
can be turned into a sync function which all platforms share.
2018-04-26 10:11:34 +02:00
zbettenbuk 63c165ee8b More generic way to refresh lists on the welcome screen 2018-04-17 17:42:46 -05:00
zbettenbuk 374e3ccf2c Properly gate calendar feature on-off 2018-04-17 17:41:12 -05:00
Lyubo Marinov f1ab160c62 Coding style: formatting, naming 2018-04-15 23:16:44 -05:00
hristoterezov eb19f94598 Deeplinking (#2760)
* feat(Deeplinking): Implement for web.

* ref(unsupported_browser): Move the mobile version to deeplinking feature

* feat(deeplinking_mobile): Redesign.

* fix(deeplinking): Use interface.NATIVE_APP_NAME.

* feat(dial_in_summary): Add the PIN to the number link.

* fix(deep_linking): Handle use case when there isn't deep linking image.

* fix(deep_linking): css

* fix(deep_linking): deeplink -> "deep linking"

* fix(deeplinking_css): Remove position: fixed

* docs(deeplinking): Add comment for the openWebApp action.
2018-04-13 17:00:40 -07:00
virtuacoplenny be78ab5317 fix(welcome-page): clear update name timeout on unmount (#2800) 2018-04-12 14:23:30 -07:00
virtuacoplenny d8ad39ed3f fix(welcome-page): modify styling for narrow screens (#2724)
* fix(welcome-page): modify styling for narrow screens

* squash: fix autoscrolling on mobile safari
2018-04-09 15:50:57 -05:00
Zoltan Bettenbuk 2412239206 [RN] Assorted hintbox fixes
* Align hint box text to center

* Fix disappearing hint box on android
2018-04-04 14:50:12 +02:00
Leonard Kim b76ab305e3 fix(welcome-page): prevent form submit to prevent page refresh 2018-03-30 15:16:22 -05:00
Zoltan Bettenbuk a3c00021de [RN] Fix showing user avatar in sidebar 2018-03-29 11:47:32 +02:00
zbettenbuk b258e0d397 Reorganize calendar access request flow 2018-03-23 07:53:36 +01:00
hristoterezov fda2548a38 fix(analytics): Init analytics for the web welcome page. 2018-03-19 17:51:22 -05:00
zbettenbuk 357f173e85 Remove obsolate PlatformElements.native.js 2018-03-13 18:04:17 -05:00
zbettenbuk 7da26042b3 Avoid asking for calendar permission on app start 2018-03-13 18:04:17 -05:00
zbettenbuk 1020a54a33 Add Android navigation bar 2018-03-13 18:04:17 -05:00
zbettenbuk b096622995 Unify recent and meeting lists 2018-03-13 18:04:16 -05:00
zbettenbuk bba480f329 Add calendar-sync feature 2018-03-13 18:04:14 -05:00
Lyubo Marinov d727ee80b2 [RN] Fix base/profile and recent-list bugs 2018-02-27 20:52:34 -06:00
Lyubo Marinov 9f69c4d730 Grow features/settings from features/app-settings and features/settings-menu 2018-02-26 19:19:01 -06:00
zbettenbuk e23d4317eb Add hint box with dynamic join button 2018-02-26 18:39:48 -06:00
zbettenbuk 547ddee3a5 Dismiss keyboard on menu open 2018-02-26 18:39:48 -06:00
zbettenbuk 7cd40353e7 Remove android view clipping fix from welcome page 2018-02-26 18:39:48 -06:00
zbettenbuk 04690dfc8f Facelift Welcome screen 2018-02-26 18:39:48 -06:00
Leonard Kim 9b04a7852a fix(welcome-page): send analytics on join 2018-02-26 18:41:47 -05:00
virtuacoplenny 74a92f83c7 feat(welcome): new design (#2492)
* feat(welcome): new design

* squash: update strings

* squash: copy/paste error?

* squash: remove welcome page disabling checks

* squash: change strings again

* squash: background var

* squash: title and desc css as variables
2018-02-21 22:58:55 -06: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 112c856850 Fix settings screen layout on iOS and add soft back button 2018-01-18 15:45:25 -06:00
zbettenbuk bfcd34358b [RN] Add app-settings feature
[RN] Fix PR feedbacks, write persistency docs
2018-01-04 12:53:29 -06:00
Lyubo Marinov fb6f1bdba0 [RN] Accommodate iPhone X on the WelcomePage 2017-12-21 00:02:22 -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
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
paweldomas b74bede0e7 feat(web/RN): update React to v16 and React Native to 0.49 2017-11-02 14:32:35 +01:00
Lyubo Marinov 003eb68e28 Flow, coding style 2017-10-13 14:34:09 -05:00
Lyubo Marinov f53c79ab24 Flow, coding style 2017-10-05 13:25:17 -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
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
Lyubo Marinov 1ea62215f6 [RN] Increase contrast and consistency in LoadingIndicator use cases 2017-09-22 15:07:06 -05:00
Saúl Ibarra Corretgé ca13a9b914 [RN] LoadingIndicator on WelcomePage
It will replace the "Join" text button while appNavigate lasts.

Note about the implementation: when appNavigate completes the component
may have been unmounted and thus we cannot touch its state. In order to
avoid this problem I added a 'mounted' instance variable which gets set
and reset in componentWillMount / Unmount respectively. This is to avoid
using isMounted, which is highly discouraged.
2017-09-20 16:01:49 -05:00
Saúl Ibarra Corretgé 35da39becf [RN] NetworkActivityIndicator
The basic indicator is extracted into a LoadingIndicator component,
which then NetworkActivityIndicator displays (or not) based on network
activity.
2017-09-20 15:59:56 -05:00
Lyubo Marinov ed53f54628 [RN] Fix the visibility of the local video on the WelcomePage 2017-09-06 08:22:39 -05:00
Lyubo Marinov a7ee632f43 [RN] LocalVideoTrackUnderlay
Implement a React Component which displays children as an overlay of
local video. The WelcomePage implemented such a component inside of it
among other WelcomePage-specific logic so I split
LocalVideoTrackUnderlay out of it. The new Component is used on the
BlankPage which may be displayed in the future not only when the
WelcomePage is disabled but also when there are long running network
requests, for example.
2017-09-05 17:45:20 -05:00
Lyubo Marinov b304ad5808 [RN] Weaken the coupling between WelcomePage and AbstractWelcomePage 2017-09-05 16:27:12 -05:00
Lyubo Marinov 45a1ae26ca [RN] Prepare to display BlankPage more
For example, while config.js and other files are being loaded before the
navigation to Conference is feasible.
2017-09-02 13:26:06 -05:00
Lyubo Marinov 7f8e8177d0 [RN] Refactor "Keep track of ongoing network requests" and "Show a progress indicator in the BlankPage"
I'm not saying that the two commits in question were wrong or worse than
what I'm offering. Anyway, I think what I'm offering brings:

* Compliance with expectations i.e. the middleware doesn't compute the
next state from the current state, the reducer does;

* Clarity and/or simplicity i.e. there's no global variable (reqIndex),
there's no need for the term "index" (a.k.a "reqIndex") in the redux
store.

* By renaming net-interceptor to network-activity feels like it's
preparing the feature to implement a NetworkActivityIndicator React
Component which will take on more of the knowledge about the specifics
of what is the network activity redux state exactly, is it maintained by
interception or some other mechanism, and abstracts it in the feature
itself allowing outsiders to merely render a React Component.
2017-08-29 18:54:04 -05:00
Saúl Ibarra Corretgé e33030582f [RN] Show a progress indicator in the BlankPage
It will only be shown when there are ongoing network requests.
2017-08-29 18:54:04 -05:00
Lyubo Marinov 0b8c12de0e Simplify route navigation
I see it as the first step in simplifying the route navigate of the
JavaScript app by removing BlankWelcomePage from _getRouteToRender. From
a faraway point of view, the app is at the route at which it is not in a
conference. Historically, the route was known as the Welcome page. But
mobile complicated the route by saying that actually it may not want to
see the room name input and join button.

Additionally, I renamed BlankWelcomePage to BlankPage because I don't
think of it as a WelcomePage alternative but rather as a more generic
BlankPage which may be utilized elsewhere in the future.

I plan for the next steps to:
* Merge Entryway, _interceptComponent, and _getRouteToRender in one
React Component rendered by AbstractApp so that the whole logic is in
one file;
* Get rid of RouteRegistry and routes.
2017-08-22 16:38:14 -05:00
Lyubo Marinov cb5b93fb6e Switch to prop-types 2017-08-22 16:38:14 -05:00
Lyubo Marinov 7114614697 Remove obsolete workaround 2017-08-22 16:38:14 -05:00
Saúl Ibarra Corretgé 9bca0e3b3d [RN] Create tracks right when they are required
When do we need tracks?

- Welcome page (only the video track)
- Conference (depends if starting with audio / video muted is requested)

When do we need to destroy the tracks?

- When we are not in a conference and there is no welcome page

In order to accommodate all the above use cases, a new component is introduced:
BlankWelcomePage. Its purpose is to take the place of the welcome page when it
is disabled. When this component is mounted local tracks are destroyed.

Analogously, a video track is created when the (real) welcome page is created,
and all the desired tracks are created then the Conference component is created.
What are desired tracks? These are the tracks we'd like to use for the
conference that is about to happen. By default both audio and video are desired.
It's possible, however, the user requested to start the call with no
video/audio, in which case it's muted in base/media and a track is not created.

The first time the app starts (with the welcome page) it will request permission
for video only, since there is no need for audio in the welcome page. Later,
when a conference is joined permission for audio will be requested when an audio
track is to be created. The audio track is not destroyed when the conference
ends. Yours truly thinks this is not needed since it's a stopped track which is
not using system resources.
2017-08-22 07:28:19 -05:00
Lyubo Marinov e7fc4739c4 Fixes jsdocs 2017-07-19 16:25:06 -05:00
Lyubo Marinov 25ec8ac6a7 Prepare for eslint 4 2017-06-14 22:17:35 -05:00
Lyubo Marinov ca94563c51 [RN] Coding style
The files styles.js are used (pretty much) on React Native only and each
of them exports 1 name. Export it as default to cut down on source code.
2017-06-10 18:07:51 -05:00
Lyubo Marinov 409255f056 [React] Cross-platform Components
Introduce certain React Components which may be used to write
cross-platform source code such as Audio like Web's audio, Container
like Web's div, Text like Web's p, etc.
2017-06-06 00:11:39 -05:00
Lyubo Marinov 4dc658c270 Fix 'Missing JSDoc comment  require-jsdoc' 2017-06-01 21:01:50 -05:00
Lyubo Marinov 69f8cf7836 Fix the disabling of the Welcome page 2017-05-26 19:23:23 -05:00
Lyubo Marinov 3db557e2c9 Move roomnameGenerator.js out of features/base/util
Over time features/base/util became a bucket where people seemed to dump
just about anything they couldn't think of a better place for. That's a
trend I don't like encouraging. Given that roomnameGenerator.js is
currently used in features/welcome only, I'm fine with moving it there
for the greater good.
2017-04-14 13:14:02 -05:00
Saúl Ibarra Corretgé 9c544c0a4b eslint: remove no longer needed comment
jsdocs were added, remove old comment which no longer applies.
2017-04-03 09:26:57 +02:00
Lyubo Marinov 18368fefaa Comply w/ coding style 2017-02-28 23:22:02 -06:00
damencho c361e1e31a Translate react strings.
Split language detectors to be web/native dependent. Take care of strings that contain html.
2017-02-28 13:16:42 -06:00
Saúl Ibarra Corretgé 2f388dfb6a Fix warning about missing key prop
When rendering using a for loop each child whould have a key prop.
2017-02-22 12:08:12 +01:00
Lyubomir Marinov e599491583 Remove duplication 2017-02-16 15:17:05 -06:00
Saúl Ibarra Corretgé 573ca97b6c [RN] Add workaround for Android view clipping
Looks like Android gets confused as to what surface to blit when we hide or
show toolbars. Setting a border on the container, seems to force the entire
area to blit properly.

Other attempted approaches, with no success:
- zIndex of -100
- width and height of 0
- opacity of 0 and setting 'disabled' on touch containers

This patch applies the workaround in the welcome page and conference containers.
2017-02-16 14:37:42 -06:00
Lyubomir Marinov 8509efc8af Make the Web app aware of its context root 2017-02-07 08:27:23 -06:00
Lyubomir Marinov fdc96044ad [RN] App-specific URL scheme 2017-01-31 22:47:47 -06:00
Lyubomir Marinov 366b2f1374 Simplify: Remove react/features/base/navigator 2017-01-28 19:56:35 -06:00
Lyubomir Marinov 2189ab7ee6 Consistent naming of react-redux's mapStateToProps
Until we make a decision on access modifier hints and adopt a respective
coding style, consistency is king.
2017-01-28 17:34:57 -06:00
Lyubomir Marinov 3aff812ee2 Consistent naming of Component props mapped from the Redux state
Until we make a decision on access modifier hints and adopt a respective
coding style, consistency is king.
2017-01-27 21:36:20 -06:00
Lyubomir Marinov b8a6eb4768 Fix the checkbox to disable the Welcome page
Recently, we reimplemented the Welcome page in React. Unfortunately, we
broke the checkbox that enables/disables the Welcome page and it would
allow checking but wouldn't allow unchecking.
2017-01-17 16:20:43 -06:00
Lyubomir Marinov 6efad1348a Fix the display of watermarks in film strip-only mode
Recently, we reimplemented the watermarks in React. Unfortunately, we
didn't take into account film strip-only mode.

Additionally, we duplicated watermark-related source code on the Welcome
and Conference pages.
2017-01-17 16:20:13 -06:00
Lyubomir Marinov 0912dbf130 Remove duplication, simplify, comply with coding style 2017-01-12 10:37:01 -06:00
Lyubomir Marinov 2f01746c55 Remove duplication, simplify, comply with coding style 2017-01-10 13:06:18 -06:00
Lyubomir Marinov b67994235e Merge branch 'BeatC-moving-conference-init-to-react-1' of https://github.com/BeatC/jitsi-meet into BeatC-BeatC-moving-conference-init-to-react-1 2017-01-09 07:44:02 -06:00
Saúl Ibarra Corretgé 8a30d44042 [RN] Disable autofocus on the welcome screen
This prevents the keyboard from showing up right when the app opens.
2017-01-06 16:08:01 +01:00
Ilya Daynatovich ed1aa700d0 remove asterisk symbol from jsdoc 2017-01-04 17:47:27 +02:00
Ilya Daynatovich 58b5e1748f editions after rebase 2017-01-04 17:47:27 +02:00
Ilya Daynatovich c570b80d7b moved app initialization to react app 2017-01-04 17:45:52 +02:00
damencho 2c5a5816c4 Adds some accessibilityLabels that can be used for testing. 2016-12-22 17:28:57 -06:00
yanas 8d90a7d091 Fix(react): Fixes black border on text input in welcome page 2016-12-21 18:09:30 -06:00
yanas 5e377d3694 Fix underlining on welcom text input on android 2016-12-21 15:00:24 -06:00
Lyubomir Marinov 4810249301 Simplify. Comply w/ coding style. 2016-12-15 21:00:06 -06:00
Ilya Daynatovich 984a6519fc Move welcome page logic from jquery to react 2016-12-15 07:55:43 -06:00
Lyubomir Marinov a5773f1d0b [RN] Links to Send feedback and Privacy (policy) 2016-12-11 22:21:51 -06:00
Lyubomir Marinov 96a18ab2d5 [RN] Change 'Privacy Policty' and 'Terms of Service' to 'Terms and Conditions' 2016-12-05 11:33:37 -06:00
Дамян Минков e8c631de01 Merge pull request #1174 from jitsi/fix-disabled-welcome-page
Fix disabled Welcome page broken with the introduction of React
2016-11-30 21:49:25 -06:00
Lyubomir Marinov bdc67201e2 Fix disabled Welcome page broken with the introduction of React
The React-based rewrite looks whether there's a room name (in the
window's location) in order to choose between WelcomePage and
Conference. But app.js expects Conference to be rendered before it
builds a room name if WelcomePage is disabled and there's no room name.
A quick and dirty workaround is to render Conference within WelcomePage
so that the rendered result closely resembles index.html before the
React-based rewrite.
2016-11-30 19:54:09 -06:00
Lyubomir Marinov 0db33bb45c React propTypes as static class properties 2016-11-30 19:53:40 -06:00
Lyubomir Marinov a1639b67a5 [RN] Don't display background colors underneath text on WelcomePage 2016-11-30 10:00:59 -06:00
Lyubomir Marinov 1f457dfca5 Hyperlinks to legalese such as Privacy Policy and Terms of Service 2016-11-29 14:30:58 -06:00
Ilya Daynatovich c3428e8213 Split React components out of index.html 2016-11-24 02:21:02 -06:00
Yana Stamcheva 10f3f01da8 [iOS] Launch screen 2016-11-08 16:12:20 -06:00
Lyubomir Marinov 7f3ff13c18 Merge jitsi-meet-react's mobile support
As a step toward merging jitsi-meet-react with jitsi-meet to share as
much source code as possible between mobile and Web, merge the part of
jitsi-meet-react's source tree which supports mobile inside the
jitsi-meet source tree and leave jitsi-meet-react's Web support in the
source code revision history but don't have it in master anymore because
it's different from jitsi-meet's Web support. In other words, the two
projects are mechanically merged at the file level and don't really
share source code between mobile and Web.
2016-10-12 10:31:52 -05:00
Lyubomir Marinov d55e0f70d9 Import jitsi/jitsi-meet-react#2f23d98
As an intermediate step on the path to merging jitsi-meet and
jitsi-meet-react, import the whole source code of jitsi-meet-react as it
stands at
2f23d98424
i.e. the lastest master at the time of this import. No modifications are
applied to the imported source code in order to preserve a complete
snapshot of it in the repository of jitsi-meet and, thus, facilitate
comparison later on. Consequently, the source code of jitsi-meet and/or
jitsi-meet-react may not work. For example, jitsi-meet's jshint may be
unable to parse jitsi-meet-react's source code.
2016-10-12 10:31:52 -05:00