diff --git a/components/app.js b/components/app.js index 3af9013..f4f9dc9 100644 --- a/components/app.js +++ b/components/app.js @@ -851,15 +851,12 @@ export default class App extends Component { handleMessage(serverID, msg) { let client = this.clients.get(serverID); - let destBuffers = this.routeMessage(serverID, msg); - if (irc.findBatchByType(msg, "chathistory")) { - destBuffers.forEach((bufName) => { - this.addMessage(serverID, bufName, msg); - }); - return; + return; // Handled by the caller } + let destBuffers = this.routeMessage(serverID, msg); + this.setState((state) => State.handleMessage(state, msg, serverID, client)); let target, channel; @@ -1090,7 +1087,14 @@ export default class App extends Component { from = receiptFromMessage(lastMsg); } - client.fetchHistoryBetween(target.name, from, to, CHATHISTORY_MAX_SIZE).catch((err) => { + client.fetchHistoryBetween(target.name, from, to, CHATHISTORY_MAX_SIZE).then((result) => { + for (let msg of result.messages) { + let destBuffers = this.routeMessage(serverID, msg); + for (let bufName of destBuffers) { + this.addMessage(serverID, target.name, msg); + } + } + }).catch((err) => { console.error("Failed to fetch backlog for '" + target.name + "': ", err); this.showError("Failed to fetch backlog for '" + target.name + "'"); }); @@ -1496,6 +1500,9 @@ export default class App extends Component { client.fetchHistoryBefore(buf.name, before, limit).then((result) => { this.endOfHistory.set(buf.id, !result.more); + for (let msg of result.messages) { + this.addMessage(buf.server, buf.name, msg); + } }); } diff --git a/lib/client.js b/lib/client.js index 4a64a4e..3bd09b4 100644 --- a/lib/client.js +++ b/lib/client.js @@ -886,7 +886,7 @@ export default class Client extends EventTarget { let max = Math.min(limit, this.isupport.chatHistory()); let params = ["BEFORE", target, "timestamp=" + before, max]; return this.roundtripChatHistory(params).then((messages) => { - return { more: messages.length >= max }; + return { messages, more: messages.length >= max }; }); } @@ -904,7 +904,7 @@ export default class Client extends EventTarget { after.time = messages[messages.length - 1].tags.time; return this.fetchHistoryBetween(target, after, before, limit); } - return null; + return { messages }; }); }