Send the 25 last messages for each channel to the client on load
This commit is contained in:
parent
c840d51e16
commit
eedc687f18
26 changed files with 300 additions and 268 deletions
|
@ -7,10 +7,10 @@ export default class ChatTitle extends PureComponent {
|
|||
handleLeaveClick = () => {
|
||||
const { tab, disconnect, part, closePrivateChat } = this.props;
|
||||
|
||||
if (tab.channel) {
|
||||
part([tab.channel], tab.server);
|
||||
} else if (tab.user) {
|
||||
closePrivateChat(tab.server, tab.user);
|
||||
if (tab.isChannel()) {
|
||||
part([tab.name], tab.server);
|
||||
} else if (tab.name) {
|
||||
closePrivateChat(tab.server, tab.name);
|
||||
} else {
|
||||
disconnect(tab.server);
|
||||
}
|
||||
|
@ -22,9 +22,9 @@ export default class ChatTitle extends PureComponent {
|
|||
topic = topic ? linkify(topic) : null;
|
||||
|
||||
let leaveTitle;
|
||||
if (tab.channel) {
|
||||
if (tab.isChannel()) {
|
||||
leaveTitle = 'Leave';
|
||||
} else if (tab.user) {
|
||||
} else if (tab.name) {
|
||||
leaveTitle = 'Close';
|
||||
} else {
|
||||
leaveTitle = 'Disconnect';
|
||||
|
|
|
@ -1,12 +1,7 @@
|
|||
import React, { PureComponent } from 'react';
|
||||
|
||||
export default class Message extends PureComponent {
|
||||
handleSenderClick = () => {
|
||||
const { message, openPrivateChat, select } = this.props;
|
||||
|
||||
openPrivateChat(message.server, message.from);
|
||||
select(message.server, message.from, true);
|
||||
};
|
||||
handleNickClick = () => this.props.onNickClick(this.props.message);
|
||||
|
||||
render() {
|
||||
const { message } = this.props;
|
||||
|
@ -21,7 +16,7 @@ export default class Message extends PureComponent {
|
|||
<p className={className} style={style}>
|
||||
<span className="message-time">{message.time}</span>
|
||||
{message.from &&
|
||||
<span className="message-sender" onClick={this.handleSenderClick}>
|
||||
<span className="message-sender" onClick={this.handleNickClick}>
|
||||
{' '}{message.from}
|
||||
</span>
|
||||
}{' '}{message.content}
|
||||
|
|
|
@ -31,11 +31,11 @@ export default class MessageBox extends PureComponent {
|
|||
listRef = el => { this.list = el; };
|
||||
|
||||
updateWidth = (width) => {
|
||||
const { isChannel, setWrapWidth, updateMessageHeight } = this.props;
|
||||
const { tab, setWrapWidth, updateMessageHeight } = this.props;
|
||||
let wrapWidth = width || this.width;
|
||||
|
||||
if (width) {
|
||||
if (isChannel && window.innerWidth > 600) {
|
||||
if (tab.isChannel() && window.innerWidth > 600) {
|
||||
wrapWidth += 200;
|
||||
}
|
||||
|
||||
|
@ -64,15 +64,14 @@ export default class MessageBox extends PureComponent {
|
|||
};
|
||||
|
||||
renderMessage = ({ index, style, key }) => {
|
||||
const { messages, select, openPrivateChat } = this.props;
|
||||
const { messages, onNickClick } = this.props;
|
||||
|
||||
return (
|
||||
<Message
|
||||
key={key}
|
||||
message={messages.get(index)}
|
||||
select={select}
|
||||
openPrivateChat={openPrivateChat}
|
||||
style={style}
|
||||
onNickClick={onNickClick}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -11,11 +11,9 @@ export default class MessageInput extends PureComponent {
|
|||
|
||||
if (e.which === 13 && e.target.value) {
|
||||
if (e.target.value[0] === '/') {
|
||||
runCommand(e.target.value, tab.channel || tab.user, tab.server);
|
||||
} else if (tab.channel) {
|
||||
sendMessage(e.target.value, tab.channel, tab.server);
|
||||
} else if (tab.user) {
|
||||
sendMessage(e.target.value, tab.user, tab.server);
|
||||
runCommand(e.target.value, tab.name, tab.server);
|
||||
} else if (tab.name) {
|
||||
sendMessage(e.target.value, tab.name, tab.server);
|
||||
}
|
||||
|
||||
addInputHistory(e.target.value);
|
||||
|
|
|
@ -3,7 +3,7 @@ import TabListItem from './TabListItem';
|
|||
|
||||
export default class TabList extends PureComponent {
|
||||
handleTabClick = (server, target) => {
|
||||
this.props.select(server, target, target && target.charAt(0) !== '#');
|
||||
this.props.select(server, target);
|
||||
this.props.hideMenu();
|
||||
};
|
||||
|
||||
|
@ -18,7 +18,7 @@ export default class TabList extends PureComponent {
|
|||
};
|
||||
|
||||
render() {
|
||||
const { channels, servers, privateChats, showTabList, selected } = this.props;
|
||||
const { tab, channels, servers, privateChats, showTabList } = this.props;
|
||||
const className = showTabList ? 'tablist off-canvas' : 'tablist';
|
||||
const tabs = [];
|
||||
|
||||
|
@ -28,11 +28,7 @@ export default class TabList extends PureComponent {
|
|||
key={address}
|
||||
server={address}
|
||||
content={servers.getIn([address, 'name'])}
|
||||
selected={
|
||||
selected.server === address &&
|
||||
selected.channel === null &&
|
||||
selected.user === null
|
||||
}
|
||||
selected={tab.server === address && tab.name === null}
|
||||
connected={servers.getIn([address, 'connected'])}
|
||||
onClick={this.handleTabClick}
|
||||
/>
|
||||
|
@ -44,7 +40,7 @@ export default class TabList extends PureComponent {
|
|||
server={address}
|
||||
target={name}
|
||||
content={name}
|
||||
selected={selected.server === address && selected.channel === name}
|
||||
selected={tab.server === address && tab.name === name}
|
||||
onClick={this.handleTabClick}
|
||||
/>
|
||||
));
|
||||
|
@ -56,7 +52,7 @@ export default class TabList extends PureComponent {
|
|||
server={address}
|
||||
target={nick}
|
||||
content={nick}
|
||||
selected={selected.server === address && selected.user === nick}
|
||||
selected={tab.server === address && tab.name === nick}
|
||||
onClick={this.handleTabClick}
|
||||
/>
|
||||
));
|
||||
|
|
|
@ -34,7 +34,7 @@ export default class UserList extends PureComponent {
|
|||
const className = showUserList ? 'userlist off-canvas' : 'userlist';
|
||||
const style = {};
|
||||
|
||||
if (!tab.channel) {
|
||||
if (!tab.isChannel()) {
|
||||
style.display = 'none';
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue