chore: Move agent availability to Account level (#3074)

- Move agent availability to the account level
This commit is contained in:
Sojan Jose
2021-10-07 13:21:46 +05:30
committed by GitHub
parent 1c6a539c0a
commit c54aae21ff
84 changed files with 618 additions and 148 deletions

View File

@@ -40,7 +40,11 @@ export const getters = {
},
getCurrentUserAvailabilityStatus(_state) {
return _state.currentUser.availability_status;
const { accounts = [] } = _state.currentUser;
const [currentAccount = {}] = accounts.filter(
account => account.id === _state.currentAccountId
);
return currentAccount.availability_status;
},
getCurrentAccountId(_state) {
@@ -125,14 +129,17 @@ export const actions = {
}
},
updateAvailability: ({ commit, dispatch }, { availability }) => {
authAPI.updateAvailability({ availability }).then(response => {
updateAvailability: async ({ commit, dispatch }, params) => {
try {
const response = await authAPI.updateAvailability(params);
const userData = response.data;
const { id, availability_status: availabilityStatus } = userData;
const { id } = userData;
setUser(userData, getHeaderExpiry(response));
commit(types.default.SET_CURRENT_USER);
dispatch('agents/updatePresence', { [id]: availabilityStatus });
});
dispatch('agents/updatePresence', { [id]: params.availability });
} catch (error) {
// Ignore error
}
},
setCurrentAccountId({ commit }, accountId) {

View File

@@ -54,13 +54,16 @@ describe('#actions', () => {
describe('#updateAvailability', () => {
it('sends correct actions if API is success', async () => {
axios.put.mockResolvedValue({
data: { id: 1, name: 'John', availability_status: 'offline' },
axios.post.mockResolvedValue({
data: {
id: 1,
account_users: [{ account_id: 1, availability_status: 'offline' }],
},
headers: { expiry: 581842904 },
});
await actions.updateAvailability(
{ commit, dispatch },
{ availability: 'offline' }
{ availability: 'offline', account_id: 1 },
);
expect(setUser).toHaveBeenCalledTimes(1);
expect(commit.mock.calls).toEqual([[types.default.SET_CURRENT_USER]]);

View File

@@ -21,7 +21,11 @@ describe('#getters', () => {
it('get', () => {
expect(
getters.getCurrentUserAvailabilityStatus({
currentUser: { id: 1, name: 'Pranav', availability_status: 'busy' },
currentAccountId: 1,
currentUser: {
id: 1,
accounts: [{ id: 1, availability_status: 'busy' }],
},
})
).toEqual('busy');
});