Nertivia-Client/src/store/modules/messageModule.js
2019-02-06 21:08:52 +00:00

71 lines
No EOL
1.3 KiB
JavaScript

import {bus} from '../../main'
import {router} from '../../router'
import Vue from 'vue';
const state = {
messages: {}
}
const getters = {
messages(state) {
return state.messages;
}
}
const actions = {
messages(context, data) {
context.commit('messages', data)
},
addMessage(context, data) {
if (data.sender) {
data.message.creator = context.getters.user
data.message.status = 0;
}
context.commit('addMessage', data);
},
replaceMessage(context, data) {
context.commit('replaceMessage', data)
}
}
const mutations = {
messages(state, data) {
Vue.set(state.messages, data.channelID, data.messages.reverse())
setTimeout(() => {
bus.$emit('scrollDown', 0);
}, 300);
},
addMessage(state, data) {
bus.$emit('scrollDown', 300);
Vue.set(
state.messages[data.channelID],
state.messages[data.channelID].length,
data.message
);
},
replaceMessage (state, data) {
const {tempID, message} = data;
state.messages[message.channelID].find((o, i) => {
if(o.tempID === tempID) {
Vue.set(
state.messages[message.channelID],
i,
message
)
return true;
}
})
}
}
export default {
namespace: true,
state,
actions,
mutations,
getters
}