H-43: fix WEB Captain takeover E2E flow (#8)
* test(shangwutong): cover CID rename reliability * H-43: fix WEB Captain takeover flow * H-48: preserve compatible provider model * H-49: make Captain takeover atomic * H-50: prevent duplicate widget initialization --------- Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
+1
-1
@@ -68,7 +68,7 @@ const isHMACVerified = computed(() => {
|
||||
});
|
||||
|
||||
const currentContact = computed(() =>
|
||||
store.getters['contacts/getContact'](props.chat.meta.sender.id)
|
||||
store.getters['contacts/getContact'](props.chat?.meta?.sender?.id)
|
||||
);
|
||||
|
||||
const isSnoozed = computed(
|
||||
|
||||
@@ -245,7 +245,8 @@ export const mutations = {
|
||||
if (!conversation?.id) return;
|
||||
|
||||
const { allConversations } = _state;
|
||||
const index = allConversations.findIndex(c => c.id === conversation.id);
|
||||
const normalizedId = Number(conversation.id);
|
||||
const index = allConversations.findIndex(c => Number(c.id) === normalizedId);
|
||||
|
||||
if (index > -1) {
|
||||
const selectedConversation = allConversations[index];
|
||||
@@ -256,8 +257,12 @@ export const mutations = {
|
||||
}
|
||||
|
||||
const { messages, ...updates } = conversation;
|
||||
allConversations[index] = { ...selectedConversation, ...updates };
|
||||
if (_state.selectedChatId === conversation.id) {
|
||||
allConversations[index] = {
|
||||
...selectedConversation,
|
||||
...updates,
|
||||
id: selectedConversation.id,
|
||||
};
|
||||
if (Number(_state.selectedChatId) === normalizedId) {
|
||||
emitter.emit(BUS_EVENTS.SCROLL_TO_MESSAGE);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -802,6 +802,28 @@ describe('#mutations', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('should update when route and API ids use different primitive types', () => {
|
||||
const state = {
|
||||
allConversations: [{ id: '3', status: 'pending', updated_at: 100 }],
|
||||
selectedChatId: '3',
|
||||
};
|
||||
|
||||
mutations[types.UPDATE_CONVERSATION](state, {
|
||||
id: 3,
|
||||
status: 'open',
|
||||
ai_takeover_active: false,
|
||||
updated_at: 200,
|
||||
});
|
||||
|
||||
expect(state.allConversations).toHaveLength(1);
|
||||
expect(state.allConversations[0]).toMatchObject({
|
||||
id: '3',
|
||||
status: 'open',
|
||||
ai_takeover_active: false,
|
||||
});
|
||||
expect(emitter.emit).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should add conversation if not found on normal view', () => {
|
||||
const state = {
|
||||
allConversations: [],
|
||||
|
||||
Reference in New Issue
Block a user