feat: add option to disable desktop sharing
config.disableDesktopSharing - when set to false will disable desktop sharing interfaceConfig.DESKTOP_SHARING_BUTTON_DISABLED_TOOLTIP - when value is assigned, will not hide the desktop sharing button completely, but show as disabled with this value used as the tooltip text.
This commit is contained in:
parent
10766e6958
commit
b84e910086
|
@ -544,7 +544,27 @@ export default {
|
||||||
audioMuted: false,
|
audioMuted: false,
|
||||||
videoMuted: false,
|
videoMuted: false,
|
||||||
isSharingScreen: false,
|
isSharingScreen: false,
|
||||||
|
/**
|
||||||
|
* Indicates if the desktop sharing functionality has been enabled.
|
||||||
|
* It takes into consideration {@link isDesktopSharingDisabledByConfig}
|
||||||
|
* as well as the status returned by
|
||||||
|
* {@link JitsiMeetJS.isDesktopSharingEnabled()}. The latter can be false
|
||||||
|
* either if the desktop sharing is not supported by the current browser
|
||||||
|
* or if it was disabled through lib-jitsi-meet specific options (check
|
||||||
|
* config.js for listed options).
|
||||||
|
*/
|
||||||
isDesktopSharingEnabled: false,
|
isDesktopSharingEnabled: false,
|
||||||
|
/**
|
||||||
|
* Set to <tt>true</tt> if the desktop sharing functionality has been
|
||||||
|
* explicitly disabled in the config.
|
||||||
|
*/
|
||||||
|
isDesktopSharingDisabledByConfig: false,
|
||||||
|
/**
|
||||||
|
* The text displayed when the desktop sharing button is disabled through
|
||||||
|
* the config. The value is set through
|
||||||
|
* {@link interfaceConfig.DESKTOP_SHARING_BUTTON_DISABLED_TOOLTIP}.
|
||||||
|
*/
|
||||||
|
desktopSharingDisabledTooltip: null,
|
||||||
/*
|
/*
|
||||||
* Whether the local "raisedHand" flag is on.
|
* Whether the local "raisedHand" flag is on.
|
||||||
*/
|
*/
|
||||||
|
@ -601,8 +621,15 @@ export default {
|
||||||
ConnectionEvents.CONNECTION_FAILED,
|
ConnectionEvents.CONNECTION_FAILED,
|
||||||
_connectionFailedHandler);
|
_connectionFailedHandler);
|
||||||
APP.connection = connection = con;
|
APP.connection = connection = con;
|
||||||
this.isDesktopSharingEnabled =
|
|
||||||
JitsiMeetJS.isDesktopSharingEnabled();
|
// Desktop sharing related stuff:
|
||||||
|
this.isDesktopSharingDisabledByConfig
|
||||||
|
= config.disableDesktopSharing;
|
||||||
|
this.isDesktopSharingEnabled
|
||||||
|
= !this.isDesktopSharingDisabledByConfig
|
||||||
|
&& JitsiMeetJS.isDesktopSharingEnabled();
|
||||||
|
this.desktopSharingDisabledTooltip
|
||||||
|
= interfaceConfig.DESKTOP_SHARING_BUTTON_DISABLED_TOOLTIP;
|
||||||
eventEmitter.emit(
|
eventEmitter.emit(
|
||||||
JitsiMeetConferenceEvents.DESKTOP_SHARING_ENABLED_CHANGED,
|
JitsiMeetConferenceEvents.DESKTOP_SHARING_ENABLED_CHANGED,
|
||||||
this.isDesktopSharingEnabled);
|
this.isDesktopSharingEnabled);
|
||||||
|
|
|
@ -26,7 +26,10 @@ var config = { // eslint-disable-line no-unused-vars
|
||||||
clientNode: 'http://jitsi.org/jitsimeet', // The name of client node advertised in XEP-0115 'c' stanza
|
clientNode: 'http://jitsi.org/jitsimeet', // The name of client node advertised in XEP-0115 'c' stanza
|
||||||
//focusUserJid: 'focus@auth.jitsi-meet.example.com', // The real JID of focus participant - can be overridden here
|
//focusUserJid: 'focus@auth.jitsi-meet.example.com', // The real JID of focus participant - can be overridden here
|
||||||
//defaultSipNumber: '', // Default SIP number
|
//defaultSipNumber: '', // Default SIP number
|
||||||
|
/**
|
||||||
|
* Disables desktop sharing functionality.
|
||||||
|
*/
|
||||||
|
disableDesktopSharing: false,
|
||||||
// The ID of the jidesha extension for Chrome.
|
// The ID of the jidesha extension for Chrome.
|
||||||
desktopSharingChromeExtId: null,
|
desktopSharingChromeExtId: null,
|
||||||
// Whether desktop sharing should be disabled on Chrome.
|
// Whether desktop sharing should be disabled on Chrome.
|
||||||
|
|
|
@ -2,6 +2,12 @@ var interfaceConfig = { // eslint-disable-line no-unused-vars
|
||||||
// TO FIX: this needs to be handled from SASS variables. There are some
|
// TO FIX: this needs to be handled from SASS variables. There are some
|
||||||
// methods allowing to use variables both in css and js.
|
// methods allowing to use variables both in css and js.
|
||||||
DEFAULT_BACKGROUND: '#474747',
|
DEFAULT_BACKGROUND: '#474747',
|
||||||
|
/**
|
||||||
|
* In case the desktop sharing is disabled through the config the button
|
||||||
|
* will not be hidden, but displayed as disabled with this text us as
|
||||||
|
* a tooltip.
|
||||||
|
*/
|
||||||
|
DESKTOP_SHARING_BUTTON_DISABLED_TOOLTIP: null,
|
||||||
INITIAL_TOOLBAR_TIMEOUT: 20000,
|
INITIAL_TOOLBAR_TIMEOUT: 20000,
|
||||||
TOOLBAR_TIMEOUT: 4000,
|
TOOLBAR_TIMEOUT: 4000,
|
||||||
DEFAULT_REMOTE_DISPLAY_NAME: "Fellow Jitster",
|
DEFAULT_REMOTE_DISPLAY_NAME: "Fellow Jitster",
|
||||||
|
|
|
@ -167,6 +167,23 @@ const IndicatorFontSizes = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the tooltip to the given element, but instead of using translation
|
||||||
|
* key uses text value.
|
||||||
|
*
|
||||||
|
* @param element the element to set the tooltip to
|
||||||
|
* @param text the tooltip text
|
||||||
|
* @param position the position of the tooltip in relation to the element
|
||||||
|
*/
|
||||||
|
setTooltipText(element, text, position) {
|
||||||
|
if (element) {
|
||||||
|
UIUtil.removeTooltip(element);
|
||||||
|
|
||||||
|
element.setAttribute('data-tooltip', TOOLTIP_POSITIONS[position]);
|
||||||
|
element.setAttribute('content', text);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the tooltip to the given element.
|
* Removes the tooltip to the given element.
|
||||||
*
|
*
|
||||||
|
|
|
@ -235,13 +235,22 @@ export function setProfileButtonUnclickable(unclickable: boolean): Function {
|
||||||
export function showDesktopSharingButton(): Function {
|
export function showDesktopSharingButton(): Function {
|
||||||
return (dispatch: Dispatch<*>) => {
|
return (dispatch: Dispatch<*>) => {
|
||||||
const buttonName = 'desktop';
|
const buttonName = 'desktop';
|
||||||
|
const disabledTooltipText
|
||||||
|
= APP.conference.desktopSharingDisabledTooltip;
|
||||||
|
const showTooltip
|
||||||
|
= disabledTooltipText
|
||||||
|
&& APP.conference.isDesktopSharingDisabledByConfig;
|
||||||
const visible
|
const visible
|
||||||
= APP.conference.isDesktopSharingEnabled
|
= UIUtil.isButtonEnabled(buttonName)
|
||||||
&& UIUtil.isButtonEnabled(buttonName);
|
&& (APP.conference.isDesktopSharingEnabled || showTooltip);
|
||||||
|
|
||||||
dispatch(setToolbarButton(buttonName, {
|
const newState = {
|
||||||
hidden: !visible
|
enabled: APP.conference.isDesktopSharingEnabled,
|
||||||
}));
|
hidden: !visible,
|
||||||
|
tooltipText: showTooltip ? disabledTooltipText : undefined
|
||||||
|
};
|
||||||
|
|
||||||
|
dispatch(setToolbarButton(buttonName, newState));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -221,10 +221,16 @@ class ToolbarButton extends AbstractToolbarButton {
|
||||||
if (UIUtil.isButtonEnabled(name)) {
|
if (UIUtil.isButtonEnabled(name)) {
|
||||||
|
|
||||||
if (!button.unclickable) {
|
if (!button.unclickable) {
|
||||||
|
if (button.tooltipText) {
|
||||||
|
UIUtil.setTooltipText(this.button,
|
||||||
|
button.tooltipText,
|
||||||
|
tooltipPosition);
|
||||||
|
} else {
|
||||||
UIUtil.setTooltip(this.button,
|
UIUtil.setTooltip(this.button,
|
||||||
button.tooltipKey,
|
button.tooltipKey,
|
||||||
tooltipPosition);
|
tooltipPosition);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (button.shortcut) {
|
if (button.shortcut) {
|
||||||
APP.keyboardshortcut.registerShortcut(
|
APP.keyboardshortcut.registerShortcut(
|
||||||
|
|
|
@ -43,6 +43,10 @@ export function getButtonAttributesByProps(props: Object = {})
|
||||||
result.style = { display: 'none' };
|
result.style = { display: 'none' };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (props.tooltipText) {
|
||||||
|
result.content = props.tooltipText;
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue