Properly handle wakelock, fixes #237

auto_join_3.3
Håvar Aambø Fosstveit 2020-04-22 10:01:58 +02:00
parent e28b6cdc5d
commit 1cef52a3a1
7 changed files with 29 additions and 24 deletions

View File

@ -199,6 +199,9 @@ export default class RoomClient
// @type {mediasoupClient.Device} // @type {mediasoupClient.Device}
this._mediasoupDevice = null; this._mediasoupDevice = null;
// Put the browser info into state
store.dispatch(meActions.setBrowser(device));
// Our WebTorrent client // Our WebTorrent client
this._webTorrent = null; this._webTorrent = null;
@ -206,13 +209,10 @@ export default class RoomClient
store.dispatch(settingsActions.setVideoResolution(defaultResolution)); store.dispatch(settingsActions.setVideoResolution(defaultResolution));
// Max spotlights // Max spotlights
if (device.bowser.getPlatformType() === 'desktop') if (device.platform === 'desktop')
this._maxSpotlights = lastN; this._maxSpotlights = lastN;
else else
{
this._maxSpotlights = mobileLastN; this._maxSpotlights = mobileLastN;
store.dispatch(meActions.setIsMobile());
}
store.dispatch( store.dispatch(
settingsActions.setLastN(this._maxSpotlights)); settingsActions.setLastN(this._maxSpotlights));

View File

@ -4,9 +4,10 @@ export const setMe = ({ peerId, loginEnabled }) =>
payload : { peerId, loginEnabled } payload : { peerId, loginEnabled }
}); });
export const setIsMobile = () => export const setBrowser = (browser) =>
({ ({
type : 'SET_IS_MOBILE' type : 'SET_BROWSER',
payload : { browser }
}); });
export const loggedIn = (flag) => export const loggedIn = (flag) =>

View File

@ -385,7 +385,7 @@ const Me = (props) =>
</Fab> </Fab>
</div> </div>
</Tooltip> </Tooltip>
{ !me.isMobile && { me.browser.platform !== 'mobile' &&
<Tooltip title={screenTip} placement='left'> <Tooltip title={screenTip} placement='left'>
<div> <div>
<Fab <Fab

View File

@ -121,7 +121,7 @@ const Peer = (props) =>
advancedMode, advancedMode,
peer, peer,
activeSpeaker, activeSpeaker,
isMobile, browser,
micConsumer, micConsumer,
webcamConsumer, webcamConsumer,
screenConsumer, screenConsumer,
@ -260,7 +260,7 @@ const Peer = (props) =>
</div> </div>
</Tooltip> </Tooltip>
{ !isMobile && { browser.platform !== 'mobile' &&
<Tooltip <Tooltip
title={intl.formatMessage({ title={intl.formatMessage({
id : 'label.newWindow', id : 'label.newWindow',
@ -408,7 +408,7 @@ const Peer = (props) =>
}, 2000); }, 2000);
}} }}
> >
{ !isMobile && { browser.platform !== 'mobile' &&
<Tooltip <Tooltip
title={intl.formatMessage({ title={intl.formatMessage({
id : 'label.newWindow', id : 'label.newWindow',
@ -509,7 +509,7 @@ Peer.propTypes =
screenConsumer : appPropTypes.Consumer, screenConsumer : appPropTypes.Consumer,
windowConsumer : PropTypes.string, windowConsumer : PropTypes.string,
activeSpeaker : PropTypes.bool, activeSpeaker : PropTypes.bool,
isMobile : PropTypes.bool, browser : PropTypes.object.isRequired,
spacing : PropTypes.number, spacing : PropTypes.number,
style : PropTypes.object, style : PropTypes.object,
smallButtons : PropTypes.bool, smallButtons : PropTypes.bool,
@ -530,7 +530,7 @@ const makeMapStateToProps = (initialState, { id }) =>
...getPeerConsumers(state, id), ...getPeerConsumers(state, id),
windowConsumer : state.room.windowConsumer, windowConsumer : state.room.windowConsumer,
activeSpeaker : id === state.room.activeSpeakerId, activeSpeaker : id === state.room.activeSpeakerId,
isMobile : state.me.isMobile browser : state.me.browser
}; };
}; };
@ -565,7 +565,7 @@ export default withRoomContext(connect(
prev.consumers === next.consumers && prev.consumers === next.consumers &&
prev.room.activeSpeakerId === next.room.activeSpeakerId && prev.room.activeSpeakerId === next.room.activeSpeakerId &&
prev.room.windowConsumer === next.room.windowConsumer && prev.room.windowConsumer === next.room.windowConsumer &&
prev.me.isMobile === next.me.isMobile prev.me.browser === next.me.browser
); );
} }
} }

View File

@ -139,7 +139,7 @@ class Room extends React.PureComponent
{ {
const { const {
room, room,
isMobile, browser,
advancedMode, advancedMode,
toolAreaOpen, toolAreaOpen,
toggleToolArea, toggleToolArea,
@ -204,7 +204,7 @@ class Room extends React.PureComponent
</Hidden> </Hidden>
</nav> </nav>
{ isMobile && { browser.platform === 'mobile' && browser.os !== 'ios' &&
<WakeLock /> <WakeLock />
} }
@ -225,7 +225,7 @@ class Room extends React.PureComponent
Room.propTypes = Room.propTypes =
{ {
room : appPropTypes.Room.isRequired, room : appPropTypes.Room.isRequired,
isMobile : PropTypes.bool.isRequired, browser : PropTypes.object.isRequired,
advancedMode : PropTypes.bool.isRequired, advancedMode : PropTypes.bool.isRequired,
toolAreaOpen : PropTypes.bool.isRequired, toolAreaOpen : PropTypes.bool.isRequired,
setToolbarsVisible : PropTypes.func.isRequired, setToolbarsVisible : PropTypes.func.isRequired,
@ -237,7 +237,7 @@ Room.propTypes =
const mapStateToProps = (state) => const mapStateToProps = (state) =>
({ ({
room : state.room, room : state.room,
isMobile : state.me.isMobile, browser : state.me.browser,
advancedMode : state.settings.advancedMode, advancedMode : state.settings.advancedMode,
toolAreaOpen : state.toolarea.toolAreaOpen toolAreaOpen : state.toolarea.toolAreaOpen
}); });
@ -263,7 +263,7 @@ export default connect(
{ {
return ( return (
prev.room === next.room && prev.room === next.room &&
prev.me.isMobile === next.me.isMobile && prev.me.browser === next.me.browser &&
prev.settings.advancedMode === next.settings.advancedMode && prev.settings.advancedMode === next.settings.advancedMode &&
prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen prev.toolarea.toolAreaOpen === next.toolarea.toolAreaOpen
); );

View File

@ -24,8 +24,10 @@ export default function()
return { return {
flag, flag,
name : browser.getBrowserName(), os : browser.getOSName(true), // ios, android, linux...
version : browser.getBrowserVersion(), platform : browser.getPlatformType(true), // mobile, desktop, tablet
bowser : browser name : browser.getBrowserName(),
version : browser.getBrowserVersion(),
bowser : browser
}; };
} }

View File

@ -2,7 +2,7 @@ const initialState =
{ {
id : null, id : null,
picture : null, picture : null,
isMobile : false, browser : null,
roles : [ 'normal' ], // Default role roles : [ 'normal' ], // Default role
canSendMic : false, canSendMic : false,
canSendWebcam : false, canSendWebcam : false,
@ -39,9 +39,11 @@ const me = (state = initialState, action) =>
}; };
} }
case 'SET_IS_MOBILE': case 'SET_BROWSER':
{ {
return { ...state, isMobile: true }; const { browser } = action.payload;
return { ...state, browser };
} }
case 'LOGGED_IN': case 'LOGGED_IN':