e849759e15
Co-authored-by: Fayaz Ahmed <15716057+fayazara@users.noreply.github.com>
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
import { mapGetters } from 'vuex';
|
|
|
|
export default {
|
|
computed: {
|
|
...mapGetters({ accountLabels: 'labels/getLabels' }),
|
|
savedLabels() {
|
|
return this.$store.getters['conversationLabels/getConversationLabels'](
|
|
this.conversationId
|
|
);
|
|
},
|
|
activeLabels() {
|
|
return this.accountLabels.filter(({ title }) =>
|
|
this.savedLabels.includes(title)
|
|
);
|
|
},
|
|
inactiveLabels() {
|
|
return this.accountLabels.filter(
|
|
({ title }) => !this.savedLabels.includes(title)
|
|
);
|
|
},
|
|
},
|
|
methods: {
|
|
addLabelToConversation(value) {
|
|
const result = this.activeLabels.map(item => item.title);
|
|
result.push(value.title);
|
|
this.onUpdateLabels(result);
|
|
},
|
|
removeLabelFromConversation(value) {
|
|
const result = this.activeLabels
|
|
.map(label => label.title)
|
|
.filter(label => label !== value);
|
|
this.onUpdateLabels(result);
|
|
},
|
|
async onUpdateLabels(selectedLabels) {
|
|
this.$store.dispatch('conversationLabels/update', {
|
|
conversationId: this.conversationId,
|
|
labels: selectedLabels,
|
|
});
|
|
},
|
|
},
|
|
};
|