frc-ui
Version:
React Web UI
98 lines (97 loc) • 4.22 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 { Provider } from './common/Hoc';
import { ChatToolEnum, MessageTypeEnum } from './interfaces';
import Header from './header';
import Content from './content';
import Send from './send';
import Tool from './tool';
import Notice from './Notice';
let Chat = class Chat extends React.Component {
constructor() {
super(...arguments);
this.sub = () => {
const { channel, Socket } = this.props;
Socket.join(channel);
};
this.leave = () => {
const { channel, Socket } = this.props;
Socket && Socket.leave(channel);
};
this.getStyle = () => { };
}
componentDidMount() {
const { channel, user, emit, success, Socket } = this.props;
if (emit && Socket) {
emit('chatPermission', channel);
emit('chatGag.isGag', { userId: user && user.userId, chatRoomCode: channel });
emit('chatMessage.clientCount', channel);
emit('chatDict', ['textMaxLength', 'SysNotice']);
this.sub();
Socket.on('connect', this.sub);
Socket.on('reconnect', this.sub);
Socket.on(`chatroom_userpermission_${channel}`, function (permission) {
success && success('chatPermission', { result: permission });
});
Socket.on(`gag_message_${channel}`, function (isGag) {
success && success('chatGag.isGag', { result: isGag === true });
});
Socket.on('dict', function (dict) {
success && success('chatDict', { result: dict });
});
Socket.on('patr_permission_msg', function () {
emit && emit('pc.hasAuth');
});
Socket.on('patr_apply_permission_msg', function () {
emit && emit('pc.applyAuth');
});
}
window.addEventListener('beforeunload', this.leave);
}
render() {
const { className, useSend, useHeader, useMessage, tools, sendSize, prefix, setName } = this.props;
let useTool = false;
if (tools instanceof Array)
useTool = tools.length > 0;
else
useTool = !!tools;
const cls = classNames(prefix, className, {
[`${prefix}-use-header`]: useHeader,
[`${prefix}-use-message`]: useMessage,
[`${prefix}-use-tool`]: useTool,
[`${prefix}-use-send`]: useSend
});
let bottom = 0;
if (useSend)
bottom += sendSize === 'small' ? 50 : 128;
if (useTool)
bottom += 28;
const style = { paddingBottom: bottom + 10 };
return (React.createElement("div", { className: cls, style: style },
useHeader && React.createElement(Header, null),
React.createElement(Notice, { top: useHeader ? 24 + 1 : 1 }),
useMessage && React.createElement(Content, null),
useTool && useSend && (React.createElement("div", { className: `${prefix}-bottom`, style: { height: bottom + 10 } },
useTool && React.createElement(Tool, null),
useSend && React.createElement(Send, { setName: setName, className: sendSize === 'small' ? `${prefix}-send-sm` : '' })))));
}
};
Chat.MessageTypeEnum = MessageTypeEnum;
Chat.ChatToolEnum = ChatToolEnum;
Chat.defaultProps = {
messageTypes: Object.keys(MessageTypeEnum),
tools: Object.keys(ChatToolEnum),
useSend: true,
useHeader: true,
useMessage: true
};
Chat = __decorate([
Provider
], Chat);
export default Chat;