From b6f5eddb459d6231c5eec1169061b1837411da1f Mon Sep 17 00:00:00 2001 From: supertiger1234 Date: Wed, 6 Nov 2019 10:36:00 +0000 Subject: [PATCH] Fixed a bug when changing channels --- src/store/modules/messageModule.js | 104 ++++++++++++++--------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/src/store/modules/messageModule.js b/src/store/modules/messageModule.js index 639919b..738f2cd 100644 --- a/src/store/modules/messageModule.js +++ b/src/store/modules/messageModule.js @@ -7,7 +7,7 @@ import messagesService from "@/services/messagesService"; const state = { messages: {}, scrollPosition: {}, - bottomUnloaded: {}, + bottomUnloaded: {} }; const getters = { @@ -15,7 +15,7 @@ const getters = { return state.messages; }, scrollPosition(state) { - return state.scrollPosition + return state.scrollPosition; }, bottomUnloaded(state) { return state.bottomUnloaded; @@ -25,7 +25,7 @@ const getters = { const actions = { // server channel async openChannel(context, channel) { - context.commit("selectedChannelID", channel.channelID) + context.commit("selectedChannelID", channel.channelID); context.commit("setChannelName", channel.name); const messages = context.state.messages[channel.channelID]; if (messages) { @@ -34,22 +34,25 @@ const actions = { return; } getMessages(context, channel.channelID, true); - }, //dm channel async openChat(context, { uniqueID, channelID, channelName }) { if (channelName) context.commit("setChannelName", channelName); const channels = context.rootState.channelModule.channels; channelID = Object.keys(channels).find(_channelID => { - return channels[_channelID].recipients && channels[_channelID].recipients.length && channels[_channelID].recipients[0].uniqueID === uniqueID - }) + return ( + channels[_channelID].recipients && + channels[_channelID].recipients.length && + channels[_channelID].recipients[0].uniqueID === uniqueID + ); + }); const messages = context.state.messages[channelID]; const channel = channels[channelID]; - - context.commit('selectedUserUniqueID', uniqueID); + + context.commit("selectedUserUniqueID", uniqueID); if (channelID) { context.commit("setDMChannelID", channelID); - context.commit("selectedChannelID", channelID); + context.commit("selectedChannelID", channelID); } else { context.commit("selectedChannelID", "Loading"); } @@ -57,17 +60,17 @@ const actions = { if (messages) return; if (channel && !messages) return getMessages(context, channelID); - const { ok, error, result } = await channelService.post(uniqueID); if (ok) { + context.commit("setDMChannelID", result.data.channel.channelID); + context.commit("selectedChannelID", result.data.channel.channelID); + context.commit("channel", result.data.channel); getMessages(context, result.data.channel.channelID, false); } else { // TODO handle this console.log(error); } - - }, messages(context, data) { context.commit("messages", data); @@ -76,7 +79,7 @@ const actions = { //check if bottom messages unloaded. const channelID = data.message.channelID; const unloadedList = context.state.bottomUnloaded[channelID]; - if (unloadedList) return + if (unloadedList) return; // if the message is sent by this client, add additional information. if (data.sender) { @@ -86,80 +89,74 @@ const actions = { context.commit("addMessage", data); }, - addMessages(context, messagesArr){ + addMessages(context, messagesArr) { const channelID = messagesArr[0].channelID; const messages = context.state.messages[channelID]; - const join = [ ...messagesArr.reverse(), ...messages, ]; + const join = [...messagesArr.reverse(), ...messages]; - context.commit('messages', {messages: join, channelID}); + context.commit("messages", { messages: join, channelID }); }, - addMessagesBefore(context, messagesArr){ + addMessagesBefore(context, messagesArr) { const channelID = messagesArr[0].channelID; const messages = context.state.messages[channelID]; - const join = [ ...messages, ...messagesArr, ]; + const join = [...messages, ...messagesArr]; - context.commit('messages', {messages: join, channelID}); + context.commit("messages", { messages: join, channelID }); }, replaceMessage(context, data) { context.commit("replaceMessage", data); }, - deleteMessage(context, {channelID, messageID}) { + deleteMessage(context, { channelID, messageID }) { const messages = context.state.messages[channelID]; messages.find((obj, index) => { - if (obj.messageID === messageID){ - context.commit('deleteMessage', {channelID, index}); + if (obj.messageID === messageID) { + context.commit("deleteMessage", { channelID, index }); return true; } - }) + }); }, deleteAllMessages(context, channelIDArr) { const messages = Object.assign({}, context.state.messages); for (let index = 0; index < channelIDArr.length; index++) { const channelID = channelIDArr[index]; - delete messages[channelID] + delete messages[channelID]; } - context.commit('setAllMessages', messages) + context.commit("setAllMessages", messages); }, - updateMessage(context, {channelID, messageID, message}) { + updateMessage(context, { channelID, messageID, message }) { const messages = context.state.messages[channelID]; messages.find((obj, index) => { - if (obj.messageID === messageID){ + if (obj.messageID === messageID) { const newObj = Object.assign({}, obj, message); - context.commit('updateMessage', {message: newObj, index}); + context.commit("updateMessage", { message: newObj, index }); return true; } - }) + }); }, - changeScrollPosition(context, {channelID, pos}) { - context.commit('changeScrollPosition', {channelID, pos}) + changeScrollPosition(context, { channelID, pos }) { + context.commit("changeScrollPosition", { channelID, pos }); }, - unloadTopMessages(context, {channelID}) { + unloadTopMessages(context, { channelID }) { const messages = [...[], ...context.state.messages[channelID]]; - const unloaded = messages.splice(50) - context.commit('messages', {channelID, messages: unloaded}) + const unloaded = messages.splice(50); + context.commit("messages", { channelID, messages: unloaded }); }, - unloadBottomMessages(context, {channelID}) { + unloadBottomMessages(context, { channelID }) { const messages = context.state.messages[channelID]; - const unloaded = messages.slice(0, -50) + const unloaded = messages.slice(0, -50); - context.commit('messages', {channelID, messages: unloaded}) + context.commit("messages", { channelID, messages: unloaded }); }, setBottomUnloadStatus(context, { channelID, status }) { - context.commit('setBottomUnloadStatus', { channelID, status }) + context.commit("setBottomUnloadStatus", { channelID, status }); } }; async function getMessages(context, channelID, isServerChannel) { const { ok, error, result } = await messagesService.get(channelID); if (ok) { - context.commit("selectedChannelID", channelID); - if (isServerChannel) { - context.commit("setServerChannelID", channelID); - } else { - context.commit("setDMChannelID", channelID); - } context.commit("messages", { channelID: result.data.channelID, messages: result.data.messages.reverse() @@ -170,21 +167,20 @@ async function getMessages(context, channelID, isServerChannel) { } } - const mutations = { setAllMessages(state, messages) { state.messages = messages; }, - setBottomUnloadStatus(state, {channelID, status}) { - Vue.set(state.bottomUnloaded, channelID, status) + setBottomUnloadStatus(state, { channelID, status }) { + Vue.set(state.bottomUnloaded, channelID, status); }, - changeScrollPosition(state, {channelID, pos}) { + changeScrollPosition(state, { channelID, pos }) { Vue.set(state.scrollPosition, channelID, pos); }, - deleteMessage(state, {channelID, index}) { - Vue.delete(state.messages[channelID], index) + deleteMessage(state, { channelID, index }) { + Vue.delete(state.messages[channelID], index); }, - updateMessage(state, {message, index}) { + updateMessage(state, { message, index }) { Vue.set(state.messages[message.channelID], index, message); }, messages(state, data) { @@ -203,7 +199,11 @@ const mutations = { state.messages[message.channelID].find((o, i) => { if (o.tempID === tempID) { - Vue.set(state.messages[message.channelID], i, Object.assign({}, message, {tempID})); + Vue.set( + state.messages[message.channelID], + i, + Object.assign({}, message, { tempID }) + ); return true; } });