frc-ui
Version:
React Web UI
65 lines (64 loc) • 2.85 kB
JavaScript
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;