Chatwoot/app/javascript/dashboard/store/modules/conversationPage.js
Fayaz Ahmed c2333214af
feat: Add Advanced Conversation Filters (#3239)
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
Co-authored-by: Tejaswini <tejaswini@chatwoot.com>
2021-11-18 19:15:02 +05:30

76 lines
1.6 KiB
JavaScript

import Vue from 'vue';
import * as types from '../mutation-types';
const state = {
currentPage: {
me: 0,
unassigned: 0,
all: 0,
appliedFilters: 0,
},
hasEndReached: {
me: false,
unassigned: false,
all: false,
},
};
export const getters = {
getHasEndReached: $state => filter => {
return $state.hasEndReached[filter];
},
getCurrentPageFilter: $state => filter => {
return $state.currentPage[filter];
},
getCurrentPage: $state => {
return $state.currentPage;
},
};
export const actions = {
setCurrentPage({ commit }, { filter, page }) {
commit(types.default.SET_CURRENT_PAGE, { filter, page });
},
setEndReached({ commit }, { filter }) {
commit(types.default.SET_CONVERSATION_END_REACHED, { filter });
},
reset({ commit }) {
commit(types.default.CLEAR_CONVERSATION_PAGE);
},
};
export const mutations = {
[types.default.SET_CURRENT_PAGE]: ($state, { filter, page }) => {
Vue.set($state.currentPage, filter, page);
},
[types.default.SET_CONVERSATION_END_REACHED]: ($state, { filter }) => {
if (filter === 'all') {
Vue.set($state.hasEndReached, 'unassigned', true);
Vue.set($state.hasEndReached, 'me', true);
}
Vue.set($state.hasEndReached, filter, true);
},
[types.default.CLEAR_CONVERSATION_PAGE]: $state => {
$state.currentPage = {
me: 0,
unassigned: 0,
all: 0,
appliedFilters: 0,
};
$state.hasEndReached = {
me: false,
unassigned: false,
all: false,
appliedFilters: false,
};
},
};
export default {
namespaced: true,
state,
getters,
actions,
mutations,
};