mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 04:57:51 +00:00 
			
		
		
		
	chore: inbox member clean up (#2144)
Delete unused logic and tests Co-authored-by: Nithin David Thomas <webofnithin@gmail.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
This commit is contained in:
		@@ -1,44 +1,6 @@
 | 
				
			|||||||
import Vue from 'vue';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import InboxMembersAPI from '../../api/inboxMembers';
 | 
					import InboxMembersAPI from '../../api/inboxMembers';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const state = {
 | 
					 | 
				
			||||||
  records: {},
 | 
					 | 
				
			||||||
  uiFlags: {
 | 
					 | 
				
			||||||
    isFetching: false,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const types = {
 | 
					 | 
				
			||||||
  SET_INBOX_MEMBERS_UI_FLAG: 'SET_INBOX_MEMBERS_UI_FLAG',
 | 
					 | 
				
			||||||
  SET_INBOX_MEMBERS: 'SET_INBOX_MEMBERS',
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const getters = {
 | 
					 | 
				
			||||||
  getMembersByInbox: $state => inboxId => {
 | 
					 | 
				
			||||||
    const allAgents = $state.records[inboxId] || [];
 | 
					 | 
				
			||||||
    const verifiedAgents = allAgents.filter(record => record.confirmed);
 | 
					 | 
				
			||||||
    return verifiedAgents;
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  getUIFlags($state) {
 | 
					 | 
				
			||||||
    return $state.uiFlags;
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const actions = {
 | 
					export const actions = {
 | 
				
			||||||
  async fetch({ commit }, { inboxId }) {
 | 
					 | 
				
			||||||
    commit(types.SET_INBOX_MEMBERS_UI_FLAG, { isFetching: true });
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      const {
 | 
					 | 
				
			||||||
        data: { payload },
 | 
					 | 
				
			||||||
      } = await InboxMembersAPI.show(inboxId);
 | 
					 | 
				
			||||||
      commit(types.SET_INBOX_MEMBERS, { inboxId, members: payload });
 | 
					 | 
				
			||||||
    } catch (error) {
 | 
					 | 
				
			||||||
      throw new Error(error);
 | 
					 | 
				
			||||||
    } finally {
 | 
					 | 
				
			||||||
      commit(types.SET_INBOX_MEMBERS_UI_FLAG, { isFetching: false });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  get(_, { inboxId }) {
 | 
					  get(_, { inboxId }) {
 | 
				
			||||||
    return InboxMembersAPI.show(inboxId);
 | 
					    return InboxMembersAPI.show(inboxId);
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
@@ -47,22 +9,7 @@ export const actions = {
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const mutations = {
 | 
					 | 
				
			||||||
  [types.SET_INBOX_MEMBERS_UI_FLAG]($state, data) {
 | 
					 | 
				
			||||||
    $state.uiFlags = {
 | 
					 | 
				
			||||||
      ...$state.uiFlags,
 | 
					 | 
				
			||||||
      ...data,
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  [types.SET_INBOX_MEMBERS]: ($state, { inboxId, members }) => {
 | 
					 | 
				
			||||||
    Vue.set($state.records, inboxId, members);
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  namespaced: true,
 | 
					  namespaced: true,
 | 
				
			||||||
  state,
 | 
					 | 
				
			||||||
  getters,
 | 
					 | 
				
			||||||
  actions,
 | 
					  actions,
 | 
				
			||||||
  mutations,
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,31 +0,0 @@
 | 
				
			|||||||
import axios from 'axios';
 | 
					 | 
				
			||||||
import { actions, types } from '../../inboxMembers';
 | 
					 | 
				
			||||||
import inboxMembers from './fixtures';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const commit = jest.fn();
 | 
					 | 
				
			||||||
global.axios = axios;
 | 
					 | 
				
			||||||
jest.mock('axios');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe('#actions', () => {
 | 
					 | 
				
			||||||
  describe('#fetch', () => {
 | 
					 | 
				
			||||||
    it('sends correct actions if API is success', async () => {
 | 
					 | 
				
			||||||
      axios.get.mockResolvedValue({ data: { payload: inboxMembers } });
 | 
					 | 
				
			||||||
      await actions.fetch({ commit }, { inboxId: 1 });
 | 
					 | 
				
			||||||
      expect(commit.mock.calls).toEqual([
 | 
					 | 
				
			||||||
        [types.SET_INBOX_MEMBERS_UI_FLAG, { isFetching: true }],
 | 
					 | 
				
			||||||
        [types.SET_INBOX_MEMBERS, { inboxId: 1, members: inboxMembers }],
 | 
					 | 
				
			||||||
        [types.SET_INBOX_MEMBERS_UI_FLAG, { isFetching: false }],
 | 
					 | 
				
			||||||
      ]);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    it('sends correct actions if API is error', async () => {
 | 
					 | 
				
			||||||
      axios.get.mockRejectedValue({ message: 'Incorrect header' });
 | 
					 | 
				
			||||||
      await expect(actions.fetch({ commit }, { inboxId: 1 })).rejects.toThrow(
 | 
					 | 
				
			||||||
        Error
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      expect(commit.mock.calls).toEqual([
 | 
					 | 
				
			||||||
        [types.SET_INBOX_MEMBERS_UI_FLAG, { isFetching: true }],
 | 
					 | 
				
			||||||
        [types.SET_INBOX_MEMBERS_UI_FLAG, { isFetching: false }],
 | 
					 | 
				
			||||||
      ]);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
@@ -1,28 +0,0 @@
 | 
				
			|||||||
export default [
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: 1,
 | 
					 | 
				
			||||||
    provider: 'email',
 | 
					 | 
				
			||||||
    uid: 'agent1@chatwoot.com',
 | 
					 | 
				
			||||||
    name: 'Agent1',
 | 
					 | 
				
			||||||
    email: 'agent1@chatwoot.com',
 | 
					 | 
				
			||||||
    account_id: 1,
 | 
					 | 
				
			||||||
    created_at: '2019-11-18T02:21:06.225Z',
 | 
					 | 
				
			||||||
    updated_at: '2019-12-20T07:43:35.794Z',
 | 
					 | 
				
			||||||
    pubsub_token: 'random-1',
 | 
					 | 
				
			||||||
    role: 'agent',
 | 
					 | 
				
			||||||
    confirmed: true,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: 2,
 | 
					 | 
				
			||||||
    provider: 'email',
 | 
					 | 
				
			||||||
    uid: 'agent2@chatwoot.com',
 | 
					 | 
				
			||||||
    name: 'Agent2',
 | 
					 | 
				
			||||||
    email: 'agent2@chatwoot.com',
 | 
					 | 
				
			||||||
    account_id: 1,
 | 
					 | 
				
			||||||
    created_at: '2019-11-18T02:21:06.225Z',
 | 
					 | 
				
			||||||
    updated_at: '2019-12-20T07:43:35.794Z',
 | 
					 | 
				
			||||||
    pubsub_token: 'random-2',
 | 
					 | 
				
			||||||
    role: 'agent',
 | 
					 | 
				
			||||||
    confirmed: true,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
];
 | 
					 | 
				
			||||||
@@ -1,24 +0,0 @@
 | 
				
			|||||||
import { getters } from '../../teamMembers';
 | 
					 | 
				
			||||||
import teamMembers from './fixtures';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe('#getters', () => {
 | 
					 | 
				
			||||||
  it('getMembersByInbox', () => {
 | 
					 | 
				
			||||||
    const state = {
 | 
					 | 
				
			||||||
      records: {
 | 
					 | 
				
			||||||
        1: [teamMembers[0]],
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
    expect(getters.getTeamMembers(state)(1)).toEqual([teamMembers[0]]);
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  it('getUIFlags', () => {
 | 
					 | 
				
			||||||
    const state = {
 | 
					 | 
				
			||||||
      uiFlags: {
 | 
					 | 
				
			||||||
        isFetching: false,
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
    expect(getters.getUIFlags(state)).toEqual({
 | 
					 | 
				
			||||||
      isFetching: false,
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
@@ -1,16 +0,0 @@
 | 
				
			|||||||
import { mutations, types } from '../../inboxMembers';
 | 
					 | 
				
			||||||
import inboxMembers from './fixtures';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe('#mutations', () => {
 | 
					 | 
				
			||||||
  describe('#SET_INBOX_MEMBERS', () => {
 | 
					 | 
				
			||||||
    it('Adds inbox members to records', () => {
 | 
					 | 
				
			||||||
      const state = { records: {} };
 | 
					 | 
				
			||||||
      mutations[types.SET_INBOX_MEMBERS](state, {
 | 
					 | 
				
			||||||
        members: [...inboxMembers],
 | 
					 | 
				
			||||||
        inboxId: 1,
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      expect(state.records).toEqual({ 1: inboxMembers });
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user