mirror of https://github.com/jitsi/jitsi-meet
parent
f295f60bea
commit
0a06e256b7
@ -1,4 +1,5 @@ |
||||
export * from './helpers'; |
||||
export * from './httpUtils'; |
||||
export * from './loadScript'; |
||||
export * from './openURLInBrowser'; |
||||
export * from './uri'; |
||||
|
@ -0,0 +1,5 @@ |
||||
// @flow
|
||||
|
||||
import { getLogger } from '../logging/functions'; |
||||
|
||||
export default getLogger('features/base/util'); |
@ -0,0 +1,17 @@ |
||||
// @flow
|
||||
|
||||
import { Linking } from 'react-native'; |
||||
|
||||
import logger from './logger'; |
||||
|
||||
/** |
||||
* Opens URL in the browser. |
||||
* |
||||
* @param {string} url - The URL to be opened. |
||||
* @returns {void} |
||||
*/ |
||||
export function openURLInBrowser(url: string) { |
||||
Linking.openURL(url).catch(error => { |
||||
logger.error(`An error occurred while trying to open ${url}`, error); |
||||
}); |
||||
} |
@ -0,0 +1,11 @@ |
||||
// @flow
|
||||
|
||||
/** |
||||
* Opens URL in the browser. |
||||
* |
||||
* @param {string} url - The URL to be opened. |
||||
* @returns {void} |
||||
*/ |
||||
export function openURLInBrowser(url: string) { |
||||
window.open(url, '', 'noopener'); |
||||
} |
@ -0,0 +1,56 @@ |
||||
// @flow
|
||||
|
||||
import { createToolbarEvent, sendAnalytics } from '../../analytics'; |
||||
import { translate } from '../../base/i18n'; |
||||
import { IconHelp } from '../../base/icons'; |
||||
import { connect } from '../../base/redux'; |
||||
import { openURLInBrowser } from '../../base/util'; |
||||
import { AbstractButton, type AbstractButtonProps } from '../../base/toolbox'; |
||||
|
||||
|
||||
type Props = AbstractButtonProps & { |
||||
|
||||
/** |
||||
* The URL to the user documenation. |
||||
*/ |
||||
_userDocumentationURL: string |
||||
}; |
||||
|
||||
/** |
||||
* Implements an {@link AbstractButton} to open the user documentation in a new window. |
||||
*/ |
||||
class HelpButton extends AbstractButton<Props, *> { |
||||
accessibilityLabel = 'toolbar.accessibilityLabel.help'; |
||||
icon = IconHelp; |
||||
label = 'toolbar.help'; |
||||
|
||||
/** |
||||
* Handles clicking / pressing the button, and opens a new window with the user documentation. |
||||
* |
||||
* @private |
||||
* @returns {void} |
||||
*/ |
||||
_handleClick() { |
||||
sendAnalytics(createToolbarEvent('help.pressed')); |
||||
openURLInBrowser(this.props._userDocumentationURL); |
||||
} |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Maps part of the redux state to the component's props. |
||||
* |
||||
* @param {Object} state - The redux store/state. |
||||
* @returns {Object} |
||||
*/ |
||||
function _mapStateToProps(state: Object) { |
||||
const { userDocumentationURL } = state['features/base/config']; |
||||
const visible = typeof userDocumentationURL === 'string'; |
||||
|
||||
return { |
||||
_userDocumentationURL: userDocumentationURL, |
||||
visible |
||||
}; |
||||
} |
||||
|
||||
export default translate(connect(_mapStateToProps)(HelpButton)); |
@ -1,44 +0,0 @@ |
||||
// @flow
|
||||
|
||||
import { createToolbarEvent, sendAnalytics } from '../../../analytics'; |
||||
import { translate } from '../../../base/i18n'; |
||||
import { IconHelp } from '../../../base/icons'; |
||||
import { AbstractButton, type AbstractButtonProps } from '../../../base/toolbox'; |
||||
|
||||
declare var interfaceConfig: Object; |
||||
|
||||
/** |
||||
* Implements an {@link AbstractButton} to open the user documentation in a new window. |
||||
*/ |
||||
class HelpButton extends AbstractButton<AbstractButtonProps, *> { |
||||
accessibilityLabel = 'toolbar.accessibilityLabel.help'; |
||||
icon = IconHelp; |
||||
label = 'toolbar.help'; |
||||
|
||||
/** |
||||
* Handles clicking / pressing the button, and opens a new window with the user documentation. |
||||
* |
||||
* @private |
||||
* @returns {void} |
||||
*/ |
||||
_handleClick() { |
||||
sendAnalytics(createToolbarEvent('help.pressed')); |
||||
window.open(interfaceConfig.HELP_LINK); |
||||
} |
||||
|
||||
/** |
||||
* Implements React's {@link Component#render()}. |
||||
* |
||||
* @inheritdoc |
||||
* @returns {React$Node} |
||||
*/ |
||||
render(): React$Node { |
||||
if (typeof interfaceConfig.HELP_LINK === 'string') { |
||||
return super.render(); |
||||
} |
||||
|
||||
return null; |
||||
} |
||||
} |
||||
|
||||
export default translate(HelpButton); |
Loading…
Reference in new issue