UNPKG

frc-ui

Version:

React Web UI

98 lines (97 loc) 4.22 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 { 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;