diff --git a/.eslintrc.yml b/.eslintrc.yml index b67991b5..d59c3b80 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -2,7 +2,7 @@ root: true parserOptions: - ecmaVersion: 2018 + ecmaVersion: 2020 env: es6: true diff --git a/client/js/socket-events/more.js b/client/js/socket-events/more.js index 5acaa3cb..34abf2c5 100644 --- a/client/js/socket-events/more.js +++ b/client/js/socket-events/more.js @@ -6,17 +6,24 @@ import socket from "../socket"; import store from "../store"; socket.on("more", function (data) { - const channel = store.getters.findChannel(data.chan); + const channel = store.getters.findChannel(data.chan)?.channel; if (!channel) { return; } - channel.channel.moreHistoryAvailable = - data.totalMessages > channel.channel.messages.length + data.messages.length; - channel.channel.messages.unshift(...data.messages); + channel.inputHistory = channel.inputHistory.concat( + data.messages + .filter((m) => m.self && m.text && m.type === "message") + .map((m) => m.text) + .reverse() + .slice(null, 100 - channel.inputHistory.length) + ); + channel.moreHistoryAvailable = + data.totalMessages > channel.messages.length + data.messages.length; + channel.messages.unshift(...data.messages); Vue.nextTick(() => { - channel.channel.historyLoading = false; + channel.historyLoading = false; }); }); diff --git a/client/js/store.js b/client/js/store.js index c9508fc8..4c32ce15 100644 --- a/client/js/store.js +++ b/client/js/store.js @@ -190,7 +190,14 @@ const store = new Vuex.Store({ // TODO: This should be a mutation channel.pendingMessage = ""; channel.inputHistoryPosition = 0; - channel.inputHistory = [""]; + + channel.inputHistory = [""].concat( + channel.messages + .filter((m) => m.self && m.text && m.type === "message") + .map((m) => m.text) + .reverse() + .slice(null, 99) + ); channel.historyLoading = false; channel.scrolledToBottom = true; channel.editTopic = false;