jiti-meet/react/features/local-recording/components/LocalRecordingButton.js

87 lines
2.0 KiB
JavaScript

/* @flow */
import React, { Component } from 'react';
import { translate } from '../../base/i18n';
import { ToolbarButton } from '../../toolbox';
/**
* The type of the React {@code Component} state of
* {@link LocalRecordingButton}.
*/
type Props = {
/**
* Whether or not {@link LocalRecordingInfoDialog} should be displayed.
*/
isDialogShown: boolean,
/**
* Callback function called when {@link LocalRecordingButton} is clicked.
*/
onClick: Function,
/**
* Invoked to obtain translated strings.
*/
t: Function
}
/**
* A React {@code Component} for opening or closing the
* {@code LocalRecordingInfoDialog}.
*
* @extends Component
*/
class LocalRecordingButton extends Component<Props> {
/**
* Initializes a new {@code LocalRecordingButton} instance.
*
* @param {Object} props - The read-only properties with which the new
* instance is to be initialized.
*/
constructor(props: Props) {
super(props);
// Bind event handlers so they are only bound once per instance.
this._onClick = this._onClick.bind(this);
}
/**
* Implements React's {@link Component#render()}.
*
* @inheritdoc
* @returns {ReactElement}
*/
render() {
const { isDialogShown, t } = this.props;
const iconClasses
= `icon-thumb-menu ${isDialogShown
? 'icon-rec toggled' : 'icon-rec'}`;
return (
<ToolbarButton
accessibilityLabel
= { t('toolbar.accessibilityLabel.localRecording') }
iconName = { iconClasses }
onClick = { this._onClick }
tooltip = { t('localRecording.dialogTitle') } />
);
}
_onClick: () => void;
/**
* Callback invoked when the Toolbar button is clicked.
*
* @private
* @returns {void}
*/
_onClick() {
this.props.onClick();
}
}
export default translate(LocalRecordingButton);