Pass along disconnect time to determine chat disable timer duration (#1310)

This commit is contained in:
Gabe Kangas 2021-08-12 23:24:43 -07:00 committed by GitHub
parent 6fb383d04b
commit 5adf2cdecd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -251,14 +251,6 @@ export default class App extends Component {
lastDisconnectTime, lastDisconnectTime,
} = status; } = status;
if (status.online && !curStreamOnline) {
// stream has just come online.
this.handleOnlineMode();
} else if (!status.online && curStreamOnline) {
// stream has just flipped offline.
this.handleOfflineMode();
}
this.setState({ this.setState({
viewerCount, viewerCount,
lastConnectTime, lastConnectTime,
@ -266,6 +258,14 @@ export default class App extends Component {
streamTitle, streamTitle,
lastDisconnectTime, lastDisconnectTime,
}); });
if (status.online && !curStreamOnline) {
// stream has just come online.
this.handleOnlineMode();
} else if (!status.online && curStreamOnline) {
// stream has just flipped offline.
this.handleOfflineMode(lastDisconnectTime);
}
} }
// when videojs player is ready, start polling for stream // when videojs player is ready, start polling for stream
@ -296,13 +296,17 @@ export default class App extends Component {
} }
// stop status timer and disable chat after some time. // stop status timer and disable chat after some time.
handleOfflineMode() { handleOfflineMode(lastDisconnectTime) {
clearInterval(this.streamDurationTimer); clearInterval(this.streamDurationTimer);
if (lastDisconnectTime) {
const remainingChatTime = const remainingChatTime =
TIMER_DISABLE_CHAT_AFTER_OFFLINE - TIMER_DISABLE_CHAT_AFTER_OFFLINE -
(Date.now() - new Date(this.state.lastDisconnectTime)); (Date.now() - new Date(lastDisconnectTime));
const countdown = remainingChatTime < 0 ? 0 : remainingChatTime; const countdown = remainingChatTime < 0 ? 0 : remainingChatTime;
this.disableChatInputTimer = setTimeout(this.disableChatInput, countdown); this.disableChatInputTimer = setTimeout(this.disableChatInput, countdown);
}
this.setState({ this.setState({
streamOnline: false, streamOnline: false,
streamStatusMessage: MESSAGE_OFFLINE, streamStatusMessage: MESSAGE_OFFLINE,