jiti-meet/react/features
paweldomas 7186a9c79c fix(base/participants): ensure default local id outside of conference
Makes sure that whenever a conference is left or switched, the local
participant's id will be equal to the default value.

The problem fixed by this commit is a situation where the local
participant may end up sharing the same ID with it's "ghost" when
rejoining a disconnected conference. The most important and easiest to
hit case is when the conference is left after the CONFERENCE_FAILED
event.

Another rare and harder to encounter in the real world issue is
where CONFERENCE_LEFT may come with the delay due to it's asynchronous
nature. The step by step scenario is as follows: trying to leave a
conference, but the network is not doing well, so it takes time,
requests are timing out. After getting back to the welcome page the
the CONFERENCE_LEFT has not arrived yet. The same conference is joined
again and the load config may timeout, but it will be read from the
cache. Now the network gets better and conference is joining which
results in our ghost participant added to the redux state. At this point
there's the root issue: two participants with the same id, because the
local one was neither cleared nor set to the new one yet
(PARTICIPANT_JOINED come, before CONFERENCE_JOINED where we adjust the
id). Then comes CONFERENCE_JOINED and we try to update our local id.
We're updating the ID of both ghost and local participant. It could be
also that the delayed CONFERENCE_LEFT comes for the old conference, but
it's too late and it would update the id for both participants.

The approach here reasons that the ID of the local participant
may be reset as soon as the local participant and, respectively, her ID
is no longer involved in a recoverable JitsiConference of interest to
the user and, consequently, the app.

Co-authored-by: Pawel Domas <pawel.domas@jitsi.org>
Co-authored-by: Lyubo Marinov <lmarinov@atlassian.com>
2018-05-29 13:44:06 +02:00
..
always-on-top Coding style 2018-05-15 14:12:39 -05:00
analytics feat(deep_linking): add analytics 2018-04-26 10:11:34 +02:00
app [RN] Fix processing outdated loadConfig requests (continued) 2018-05-23 16:48:23 -05:00
audio-level-indicator Import PropTypes from prop-types 2017-09-27 16:24:53 -05:00
authentication ref(base/connection): conferenceFailed error argument 2018-05-04 13:02:19 +02:00
base fix(base/participants): ensure default local id outside of conference 2018-05-29 13:44:06 +02:00
calendar-sync [RN] Legacy support of calendar-sync's knownDomains 2018-05-14 16:32:30 -05:00
chat fix(RN): bundle sound files in release build 2018-04-10 10:59:52 +02:00
conference Reduce direct read access to the features/base/participants redux state 2018-05-23 09:46:15 -05:00
connection-indicator ref(stats): start the statsEmitter for both mobile and web 2018-04-10 16:43:12 -05:00
connection-stats eslint 4.8.0 2017-10-02 18:12:38 -05:00
deep-linking feat(DeepLinkingMobilePage): Add dynamic links support. 2018-05-09 09:16:02 -05:00
desktop-picker feat(web/RN): update React to v16 and React Native to 0.49 2017-11-02 14:32:35 +01:00
device-selection Make web use the redux settings/profile 2018-05-09 15:20:22 +02:00
display-name feat(aot): Handle video not available use cases (#2242) 2017-12-04 19:27:17 -08:00
etherpad feat(new-toolbars): initial implementation 2018-03-27 00:54:30 -05:00
feedback ref(toolbar): kill Stateless Toolbar and Invite, Feedback, Profile buttons 2018-04-17 20:22:00 +02:00
filmstrip [RN] Disable filmstrip separation on Android 2018-05-25 09:21:26 -05:00
invite feat(call-flows): Add config property for enabling call flows. (#3031) 2018-05-23 14:52:44 -07:00
keyboard-shortcuts feat(new-toolbars): initial implementation 2018-03-27 00:54:30 -05:00
large-video [RN] Simplify styles which fill the parent view 2018-05-23 14:30:22 +02:00
mobile fix(base/participants): ensure default local id outside of conference 2018-05-29 13:44:06 +02:00
notifications ref(notifications): stop passing around Notifications component 2018-02-12 17:53:29 -06:00
overlay [RN] Use a SafeAreaView for OverlayFrame 2018-05-23 14:30:42 +02:00
presence-status fix(presence-status): Use lower case for call flow related statuses. 2018-05-23 15:22:01 -05:00
recent-list [RN] If recent-list knows a domain, then the app knows it 2018-05-14 16:32:19 -05:00
recording feat(recording): frontend logic can support live streaming and recording (#2952) 2018-05-16 07:00:16 -07:00
remote-control Reduce direct read access to the features/base/participants redux state 2018-05-23 09:46:15 -05:00
remote-video-menu Restructures the analytics events (#2333) 2018-01-03 13:24:07 -08:00
room-lock [RN] Adjust button labels to reflext the actual state 2018-05-22 12:02:05 +02:00
settings Coding style 2018-05-15 14:12:39 -05:00
share-room Coding style: formatting, naming 2018-04-15 23:16:44 -05:00
shared-video feat(new-toolbars): initial implementation 2018-03-27 00:54:30 -05:00
side-panel feat(new-toolbars): initial implementation 2018-03-27 00:54:30 -05:00
speaker-stats feat(web/RN): update React to v16 and React Native to 0.49 2017-11-02 14:32:35 +01:00
toolbox fix(AudioMuteButton): ensure track on unmute 2018-05-27 15:07:23 -05:00
unsupported-browser Deeplinking (#2760) 2018-04-13 17:00:40 -07:00
video-quality feat(recording): frontend logic can support live streaming and recording (#2952) 2018-05-16 07:00:16 -07:00
videosipgw feat(recording): frontend logic can support live streaming and recording (#2952) 2018-05-16 07:00:16 -07:00
welcome Reduce direct read access to the features/base/participants redux state 2018-05-23 09:46:15 -05:00