/* @flow */
import React from 'react';
import Flux from '../../lib/flux';
import lodash from 'lodash';
import OverlayStore from '../../stores/OverlayStore';
import KeybindsStore from '../../stores/KeybindsStore';
import OverlayActionCreators from '../../actions/OverlayActionCreators';
import KeybindsActionCreators from '../../actions/KeybindsActionCreators';
import HelpdeskUtils from '../../utils/HelpdeskUtils';
import FormNotice from '../../uikit/form/FormNotice';
import FormSection from '../../uikit/form/FormSection';
import FormTitle, {Tags} from '../../uikit/form/FormTitle';
import Flex from '../../uikit/Flex';
import FormItem from '../../uikit/form/FormItem';
import SwitchItem from '../../uikit/SwitchItem';
import KeyRecorder from '../common/KeyRecorder';
import RadioGroup from '../../uikit/RadioGroup';
import i18n from '../../i18n';
import {
OverlayDisplayNames,
OverlayDisplayUsers,
OverlayAvatarSizes,
KeybindCustomActions as KeybindActions,
} from '../../Constants';
function getCurrentInputLockKeybind() {
return lodash.find(KeybindsStore.getKeybinds(), keybind => {
return keybind.managed === true && keybind.action === KeybindActions.TOGGLE_OVERLAY_INPUT_LOCK;
});
}
class UserSettingsOverlay extends React.PureComponent {
constructor(props) {
super(props);
lodash.bindAll(this, [
'handleChangeEnabled',
'handleChangeDisplayNameMode',
'handleChangeAvatarSizeMode',
'handleChangeDisplayUserMode',
'handleInputLockShortcutChange',
]);
}
handleChangeEnabled(e) {
OverlayActionCreators.setEnabled(e.currentTarget.checked);
}
handleChangeDisplayNameMode({value}) {
OverlayActionCreators.setDisplayNameMode(value);
}
handleChangeAvatarSizeMode({value}) {
OverlayActionCreators.setAvatarSizeMode(value);
}
handleChangeDisplayUserMode({value}) {
OverlayActionCreators.setDisplayUserMode(value);
}
handleInputLockShortcutChange(shortcut) {
KeybindsActionCreators.setKeybind({...this.props.inputLockKeybind, shortcut});
}
renderExplanation() {
return (
);
}
renderOverlayToggle() {
const {enabled, available, progress, inputLockKeybind} = this.props;
let overlayProgressNote;
if (enabled && !available && progress < 1) {
const percent = (progress * 100) | 0;
const note = i18n.Messages.OVERLAY_DOWNLOAD_PROGRESS.format({percent});
overlayProgressNote = {note};
}
return (
{i18n.Messages.SETTINGS_GAMES_ENABLE_OVERLAY_LABEL}
{overlayProgressNote}
{i18n.Messages.ENABLE_INGAME_OVERLAY}
);
}
renderAvatarSize() {
return (
);
}
renderDisplayNames() {
return (
);
}
renderDisplayUsers() {
return (
);
}
render() {
return (
{this.renderExplanation()}
{this.renderOverlayToggle()}
{this.renderAvatarSize()}
{this.renderDisplayNames()}
{this.renderDisplayUsers()}
);
}
}
export default Flux.connectStores([OverlayStore, KeybindsStore], () => ({
enabled: OverlayStore.enabled,
available: OverlayStore.isAvailable,
progress: OverlayStore.installProgress,
avatarSizeMode: OverlayStore.getAvatarSizeMode(),
displayNameMode: OverlayStore.getDisplayNameMode(),
displayUserMode: OverlayStore.getDisplayUserMode(),
inputLockKeybind: getCurrentInputLockKeybind(),
}))(UserSettingsOverlay);
// WEBPACK FOOTER //
// ./discord_app/components/user_settings/UserSettingsOverlay.js