mirror of
https://github.com/danbulant/Nertivia-Client
synced 2026-06-18 14:01:12 +00:00
Fixed a bug when changing channels
This commit is contained in:
parent
6f095a2e0e
commit
b6f5eddb45
1 changed files with 52 additions and 52 deletions
|
|
@ -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;
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue