fix: reopen pending human conversations
Build and publish Docker images / Build and publish images (push) Successful in 2m23s

This commit is contained in:
2026-09-14 18:55:51 +08:00
parent 665e531dc3
commit 9b8d575657
7 changed files with 121 additions and 14 deletions
@@ -8,6 +8,7 @@ import { getConversationAPI } from '../../api/conversation';
const state = {
id: '',
status: '',
aiTakeoverActive: false,
};
export const getters = {
@@ -37,16 +38,21 @@ export const mutations = {
[SET_CONVERSATION_ATTRIBUTES]($state, data) {
$state.id = data.id;
$state.status = data.status;
$state.aiTakeoverActive = data.ai_takeover_active === true;
},
[UPDATE_CONVERSATION_ATTRIBUTES]($state, data) {
if (data.id === $state.id) {
$state.id = data.id;
$state.status = data.status;
if (Object.prototype.hasOwnProperty.call(data, 'ai_takeover_active')) {
$state.aiTakeoverActive = data.ai_takeover_active === true;
}
}
},
[CLEAR_CONVERSATION_ATTRIBUTES]($state) {
$state.id = '';
$state.status = '';
$state.aiTakeoverActive = false;
},
};
@@ -3,42 +3,61 @@ import { mutations } from '../../conversationAttributes';
describe('#mutations', () => {
describe('#SET_CONVERSATION_ATTRIBUTES', () => {
it('set status of the conversation', () => {
const state = { id: '', status: '' };
const state = { id: '', status: '', aiTakeoverActive: false };
mutations.SET_CONVERSATION_ATTRIBUTES(state, {
id: 1,
status: 'open',
ai_takeover_active: true,
});
expect(state).toEqual({
id: 1,
status: 'open',
aiTakeoverActive: true,
});
expect(state).toEqual({ id: 1, status: 'open' });
});
});
describe('#UPDATE_CONVERSATION_ATTRIBUTES', () => {
it('update status if it is same conversation', () => {
const state = { id: 1, status: 'pending' };
const state = { id: 1, status: 'pending', aiTakeoverActive: false };
mutations.UPDATE_CONVERSATION_ATTRIBUTES(state, {
id: 1,
status: 'open',
ai_takeover_active: true,
});
expect(state).toEqual({
id: 1,
status: 'open',
aiTakeoverActive: true,
});
expect(state).toEqual({ id: 1, status: 'open' });
});
it('doesnot update status if it is not the same conversation', () => {
const state = { id: 1, status: 'pending' };
const state = { id: 1, status: 'pending', aiTakeoverActive: false };
mutations.UPDATE_CONVERSATION_ATTRIBUTES(state, {
id: 2,
status: 'open',
ai_takeover_active: true,
});
expect(state).toEqual({
id: 1,
status: 'pending',
aiTakeoverActive: false,
});
expect(state).toEqual({ id: 1, status: 'pending' });
});
});
describe('#CLEAR_CONVERSATION_ATTRIBUTES', () => {
it('clear status if it is same conversation', () => {
const state = { id: 1, status: 'open' };
const state = { id: 1, status: 'open', aiTakeoverActive: true };
mutations.CLEAR_CONVERSATION_ATTRIBUTES(state, {
id: 1,
status: 'open',
});
expect(state).toEqual({ id: '', status: '' });
expect(state).toEqual({
id: '',
status: '',
aiTakeoverActive: false,
});
});
});
});