Send 100 actual messages when requesting history with hidden or condensed status messages
This commit is contained in:
parent
4a345eb6d9
commit
a9f97ddf22
@ -247,6 +247,7 @@ export default {
|
||||
socket.emit("more", {
|
||||
target: this.channel.id,
|
||||
lastId: lastMessage,
|
||||
condensed: this.$store.state.settings.statusMessages !== "shown",
|
||||
});
|
||||
},
|
||||
onLoadButtonObserved(entries) {
|
||||
|
@ -11,6 +11,7 @@ const Helper = require("./helper");
|
||||
const UAParser = require("ua-parser-js");
|
||||
const uuidv4 = require("uuid/v4");
|
||||
const escapeRegExp = require("lodash/escapeRegExp");
|
||||
const constants = require("../client/js/constants.js");
|
||||
const inputs = require("./plugins/inputs");
|
||||
const PublicClient = require("./plugins/packages/publicClient");
|
||||
|
||||
@ -466,7 +467,31 @@ Client.prototype.more = function(data) {
|
||||
|
||||
// If requested id is not found, an empty array will be sent
|
||||
if (index > 0) {
|
||||
messages = chan.messages.slice(Math.max(0, index - 100), index);
|
||||
let startIndex = index;
|
||||
|
||||
if (data.condensed) {
|
||||
// Limit to 1000 messages (that's 10x normal limit)
|
||||
const indexToStop = Math.max(0, index - 1000);
|
||||
let realMessagesLeft = 100;
|
||||
|
||||
for (let i = index - 1; i >= indexToStop; i--) {
|
||||
startIndex--;
|
||||
|
||||
// Do not count condensed messages towards the 100 messages
|
||||
if (constants.condensedTypes.has(chan.messages[i].type)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Count up actual 100 visible messages
|
||||
if (--realMessagesLeft === 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
startIndex = Math.max(0, index - 100);
|
||||
}
|
||||
|
||||
messages = chan.messages.slice(startIndex, index);
|
||||
}
|
||||
|
||||
return {
|
||||
|
Loading…
Reference in New Issue
Block a user