mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 19:17:48 +00:00 
			
		
		
		
	Fix: Hide prechat for sessions inititated with setUser (#1914)
This commit is contained in:
		 Nithin David Thomas
					Nithin David Thomas
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							484c32fae3
						
					
				
				
					commit
					3043ee5058
				
			| @@ -1,6 +1,9 @@ | ||||
| class Api::V1::Widget::ContactsController < Api::V1::Widget::BaseController | ||||
|   before_action :process_hmac | ||||
|  | ||||
|   def show; end | ||||
|  | ||||
|   def update | ||||
|     process_hmac | ||||
|     contact_identify_action = ContactIdentifyAction.new( | ||||
|       contact: @contact, | ||||
|       params: permitted_params.to_h.deep_symbolize_keys | ||||
|   | ||||
| @@ -150,6 +150,7 @@ export default { | ||||
|           this.setPopoutDisplay(message.showPopoutButton); | ||||
|           this.fetchAvailableAgents(websiteToken); | ||||
|           this.setHideMessageBubble(message.hideMessageBubble); | ||||
|           this.$store.dispatch('contacts/get'); | ||||
|         } else if (message.event === 'widget-visible') { | ||||
|           this.scrollConversationToBottom(); | ||||
|         } else if (message.event === 'set-current-url') { | ||||
|   | ||||
| @@ -3,6 +3,9 @@ import { API } from 'widget/helpers/axios'; | ||||
| const buildUrl = endPoint => `/api/v1/${endPoint}${window.location.search}`; | ||||
|  | ||||
| export default { | ||||
|   get() { | ||||
|     return API.get(buildUrl('widget/contact')); | ||||
|   }, | ||||
|   update(identifier, userObject) { | ||||
|     return API.patch(buildUrl('widget/contact'), { | ||||
|       identifier, | ||||
|   | ||||
| @@ -1,7 +1,27 @@ | ||||
| import ContactsAPI from '../../api/contacts'; | ||||
| import { refreshActionCableConnector } from '../../helpers/actionCable'; | ||||
|  | ||||
| const state = { | ||||
|   currentUser: {}, | ||||
| }; | ||||
|  | ||||
| const SET_CURRENT_USER = 'SET_CURRENT_USER'; | ||||
|  | ||||
| export const getters = { | ||||
|   getCurrentUser(_state) { | ||||
|     return _state.currentUser; | ||||
|   }, | ||||
| }; | ||||
|  | ||||
| export const actions = { | ||||
|   get: async ({ commit }) => { | ||||
|     try { | ||||
|       const { data } = await ContactsAPI.get(); | ||||
|       commit(SET_CURRENT_USER, data); | ||||
|     } catch (error) { | ||||
|       // Ignore error | ||||
|     } | ||||
|   }, | ||||
|   update: async ({ dispatch }, { identifier, user: userObject }) => { | ||||
|     try { | ||||
|       const user = { | ||||
| @@ -14,6 +34,7 @@ export const actions = { | ||||
|         data: { pubsub_token: pubsubToken }, | ||||
|       } = await ContactsAPI.update(identifier, user); | ||||
|  | ||||
|       dispatch('get'); | ||||
|       if (userObject.identifier_hash) { | ||||
|         dispatch('conversation/clearConversations', {}, { root: true }); | ||||
|         dispatch('conversation/fetchOldConversations', {}, { root: true }); | ||||
| @@ -33,10 +54,17 @@ export const actions = { | ||||
|   }, | ||||
| }; | ||||
|  | ||||
| export const mutations = { | ||||
|   [SET_CURRENT_USER]($state, user) { | ||||
|     const { currentUser } = $state; | ||||
|     $state.currentUser = { ...currentUser, ...user }; | ||||
|   }, | ||||
| }; | ||||
|  | ||||
| export default { | ||||
|   namespaced: true, | ||||
|   state: {}, | ||||
|   getters: {}, | ||||
|   state, | ||||
|   getters, | ||||
|   actions, | ||||
|   mutations: {}, | ||||
|   mutations, | ||||
| }; | ||||
|   | ||||
| @@ -0,0 +1,21 @@ | ||||
| import { API } from 'widget/helpers/axios'; | ||||
| import { actions } from '../../contacts'; | ||||
|  | ||||
| const commit = jest.fn(); | ||||
| jest.mock('widget/helpers/axios'); | ||||
|  | ||||
| describe('#actions', () => { | ||||
|   describe('#update', () => { | ||||
|     it('sends correct actions', async () => { | ||||
|       const user = { | ||||
|         email: 'thoma@sphadikam.com', | ||||
|         name: 'Adu Thoma', | ||||
|         avatar_url: '', | ||||
|         identifier_hash: 'malana_hash', | ||||
|       }; | ||||
|       API.patch.mockResolvedValue({ data: { pubsub_token: 'token' } }); | ||||
|       await actions.update({ commit }, { identifier: 1, user }); | ||||
|       expect(commit.mock.calls).toEqual([]); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
| @@ -0,0 +1,21 @@ | ||||
| import { getters } from '../../contacts'; | ||||
|  | ||||
| describe('#getters', () => { | ||||
|   it('getCurrentUser', () => { | ||||
|     const user = { | ||||
|       email: 'thoma@sphadikam.com', | ||||
|       name: 'Adu Thoma', | ||||
|       avatar_url: '', | ||||
|       identifier_hash: 'malana_hash', | ||||
|     }; | ||||
|     const state = { | ||||
|       currentUser: user, | ||||
|     }; | ||||
|     expect(getters.getCurrentUser(state)).toEqual({ | ||||
|       email: 'thoma@sphadikam.com', | ||||
|       name: 'Adu Thoma', | ||||
|       avatar_url: '', | ||||
|       identifier_hash: 'malana_hash', | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
| @@ -0,0 +1,17 @@ | ||||
| import { mutations } from '../../contacts'; | ||||
|  | ||||
| describe('#mutations', () => { | ||||
|   describe('#SET_CURRENT_USER', () => { | ||||
|     it('set current user', () => { | ||||
|       const user = { | ||||
|         email: 'thoma@sphadikam.com', | ||||
|         name: 'Adu Thoma', | ||||
|         avatar_url: '', | ||||
|         identifier_hash: 'malana_hash', | ||||
|       }; | ||||
|       const state = { currentUser: {} }; | ||||
|       mutations.SET_CURRENT_USER(state, user); | ||||
|       expect(state.currentUser).toEqual(user); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
| @@ -114,13 +114,15 @@ export default { | ||||
|       conversationSize: 'conversation/getConversationSize', | ||||
|       groupedMessages: 'conversation/getGroupedConversation', | ||||
|       isFetchingList: 'conversation/getIsFetchingList', | ||||
|       currentUser: 'contacts/getCurrentUser', | ||||
|     }), | ||||
|     currentView() { | ||||
|       const { email: currentUserEmail = '' } = this.currentUser; | ||||
|       if (this.isHeaderCollapsed) { | ||||
|         if (this.conversationSize) { | ||||
|           return 'messageView'; | ||||
|         } | ||||
|         if (this.preChatFormEnabled) { | ||||
|         if (this.preChatFormEnabled && !currentUserEmail) { | ||||
|           return 'preChatFormView'; | ||||
|         } | ||||
|         return 'messageView'; | ||||
|   | ||||
							
								
								
									
										3
									
								
								app/views/api/v1/widget/contacts/show.json.jbuilder
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								app/views/api/v1/widget/contacts/show.json.jbuilder
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| json.id @contact.id | ||||
| json.name @contact.name | ||||
| json.email @contact.email | ||||
| @@ -150,7 +150,7 @@ Rails.application.routes.draw do | ||||
|             post :transcript | ||||
|           end | ||||
|         end | ||||
|         resource :contact, only: [:update] | ||||
|         resource :contact, only: [:show, :update] | ||||
|         resources :inbox_members, only: [:index] | ||||
|         resources :labels, only: [:create, :destroy] | ||||
|       end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user