diff --git a/front/src/App.vue b/front/src/App.vue index 276656f..6d83b2b 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -102,18 +102,18 @@ export default { switch (event.type) { case 'message': - switch (event.message.subject) { - case 'content': - this.$store.commit('addMessage', event.message) - break - case 'rules': - this.$store.commit('addRule', event.message) - break + if (event.message.subject == 'rules') { + this.$store.commit('addRule', event.message) + } else { + this.$store.commit('addMessage', event.message) } break case 'delete_message': - this.$store.commit('deleteMessage', event.message_id) + this.$store.commit('deleteMessage', { + subject: event.topic, + mid: event.message_id + }) break case 'update_message': diff --git a/front/src/store/index.js b/front/src/store/index.js index d8e4050..528bc3a 100644 --- a/front/src/store/index.js +++ b/front/src/store/index.js @@ -115,20 +115,29 @@ export default createStore({ } } }, - deleteMessage: (state, mid) => { - const message = state.contents.find(m => m.id == mid) - if (message) { - state.contents.splice(state.contents.indexOf(message), 1) + deleteMessage: (state, { mid, subject }) => { + const topic = state.topics.find(t => t.title == subject) + if (topic) { + const message = topic.messages.find(m => m.id == mid) + if (message) { + topic.messages.splice(topic.messages.indexOf(message), 1) + } } }, addReaction: (state, { mid, reaction }) => { - const message = state.contents.find(m => m.id == mid) + const message = state.topics + .map(t => t.messages) + .flat() + .find(m => m.id == mid) if (message) { message.reactions.push(reaction) } }, removeReaction: (state, { mid, reaction }) => { - const message = state.contents.find(m => m.id == mid) + const message = state.topics + .map(t => t.messages) + .flat() + .find(m => m.id == mid) if (message) { message.reactions.splice(message.reactions.indexOf(reaction), 1) } @@ -145,13 +154,15 @@ export default createStore({ addRule: (state, rule) => { if (toCSS(rule) !== null) { // state.rules.push(toCSS(rule, state.currentStream)) - // vue will not update if i use rules.push(rule) state.rules = [...state.rules,...[toCSS(rule, state.currentStream)]] } }, editMessage: (state, { mid, content }) => { - const message = state.contents.find(m => m.id == mid) + const message = state.topics + .map(t => t.messages) + .flat() + .find(m => m.id == mid) const rule = state.rules.find(r => r.id == mid) if (message) { message.content = content