* feat: Drops external connect optimization.
A bosh only optimization which is no longer used and does not bring any significant value when measured.
* squash: Updates ljm.
* fix(ts,connection) avoid mixing web and native code
* chore(ts) split config
The mobile part is still WIP.
* Remove default tsconfig
* Fix ts-loader - use web tsconfig
* Fix tsconfig
Use noEmit only on npm scripts (for type checking), but don't use it in webpack
* Fix
* Fix import
* Fix
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
* fix: When adding a room param to urls check for previous params.
* squash: Uses URL object to modify the url.
* squash: Use common connection options from base/connection.
Normalizes bosh url and for web.
* squash: Adds release param to external api and handles it.
* feat: Adds release handling for mobile(links in welcome page).
* squash: Fixes comments.
* fix(authentication) login dialog now closes when connection is established
* fix(authentication) fixed shibboleth auth
* fix(authentication) renamed authenticateExternal func to authenticate and updated its logic
* fix(authentication)removed logindialog.js and created actions.any
* fix(authentication) removed focus from externalauthwindow
* fix(authentication) removed private sign from some actions and added openLoginDialog to actions.any
* fix(authentication) exported all from actions.any
* fix(authentication) reverted change regarding externalAuth
* fix(authentication) fixed indentation
Does not skip passing jwt even when malformed to allow getting the error, terminating the connection and showing the warning. We were not passing jwt when malformed and were successfully joining a conference for deployments where no token is allowed.
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.
Config.js will allow to specify both BOSH and Websocket URLs. In such
case the web app will prefer Websocket over BOSH. The reason is that it
appears to be more stable and a bit fast on web, while on mobile
websocket is dropped fast(killed by the OS) on network changes.
* 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
* Handles connection failed event details (passing them to analytics).
* Fixing comments.
* Updates depending versions to be able to test.
* Fixing comments.
* Fixes wrong jsdoc.
A few occurrences of coding style/formatting which I noticed while
reviewing 'feat(eslint): Enable for non react files'. These are
definitely not all occurrences I could've noticed during the review
but... we're talking about files outside react/ anyway.
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.