UNPKG

frc-ui

Version:

React Web UI

65 lines (64 loc) 2.85 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import React from 'react'; import classNames from 'classnames'; import Checkbox from '../../checkbox'; import { Consumer } from '../common/Hoc'; import { ChatPermissionEnum, LocalStorageKey } from '../interfaces'; import { getLocalStorageItem, setLocalStorageItem } from '../common'; let Anon = class Anon extends React.PureComponent { constructor(props) { super(props); this.anon = false; this.updateAnon = (anon) => { const { channel, emit } = this.props; if (emit) { emit('chat', { isAnonymous: anon }); anon && emit('chatMessage.anonymousName', channel); } }; this.handleClick = () => { const { isAnonymous } = this.props; setLocalStorageItem(LocalStorageKey.isAnonymous, isAnonymous ? 'false' : 'true'); this.updateAnon(!isAnonymous); }; const { permission } = props; this.anon = (permission || []).some((p) => p === ChatPermissionEnum.ANONYMOUS_PERM); } componentDidMount() { const { emit, isAnonymous, channel, permission } = this.props; if (isAnonymous && emit) { emit('chatMessage.anonymousName', channel); } this.anon = (permission || []).some((p) => p === ChatPermissionEnum.ANONYMOUS_PERM); } componentWillReceiveProps(next) { if (next.permission && next.permission !== this.props.permission) { this.anon = (next.permission || []).some((p) => p === ChatPermissionEnum.ANONYMOUS_PERM); this.updateAnon(this.anon); } } render() { const { locale, prefix, className, isAnonymous } = this.props; const pre = `${prefix}-tool-anon`; const cls = classNames(pre, className); const props = { className: cls, disabled: !this.anon, onChange: this.handleClick }; console.log(props); return (React.createElement(Checkbox, Object.assign({ checked: !!isAnonymous }, props), locale && locale.anon)); } }; Anon.defaultProps = { isAnonymous: getLocalStorageItem(LocalStorageKey.isAnonymous, 'false') === 'true' }; Anon = __decorate([ Consumer(['isAnonymous', 'permission']) ], Anon); export default Anon;