diff --git a/app/javascript/dashboard/components-next/NewConversation/components/ContactSelector.vue b/app/javascript/dashboard/components-next/NewConversation/components/ContactSelector.vue
index 33a2f8f20..7ff0a2efa 100644
--- a/app/javascript/dashboard/components-next/NewConversation/components/ContactSelector.vue
+++ b/app/javascript/dashboard/components-next/NewConversation/components/ContactSelector.vue
@@ -1,9 +1,11 @@
@@ -126,11 +140,11 @@ const errorClass = computed(() => {
:is-loading="isLoading"
:disabled="contactableInboxesList?.length > 0 && showInboxesDropdown"
allow-create
- type="email"
+ :type="inputType"
class="flex-1 min-h-7"
:class="errorClass"
focus-on-mount
- @input="emit('searchContacts', $event)"
+ @input="handleInput"
@on-click-outside="emit('updateDropdown', 'contacts', false)"
@add="emit('setSelectedContact', $event)"
@remove="emit('clearSelectedContact')"
diff --git a/app/javascript/dashboard/components-next/NewConversation/helpers/composeConversationHelper.js b/app/javascript/dashboard/components-next/NewConversation/helpers/composeConversationHelper.js
index 12a5e76b3..c5d3c6264 100644
--- a/app/javascript/dashboard/components-next/NewConversation/helpers/composeConversationHelper.js
+++ b/app/javascript/dashboard/components-next/NewConversation/helpers/composeConversationHelper.js
@@ -193,10 +193,12 @@ export const searchContacts = async ({ keys, query }) => {
return filteredPayload || [];
};
-export const createNewContact = async email => {
+export const createNewContact = async input => {
const payload = {
- name: getCapitalizedNameFromEmail(email),
- email,
+ name: input.startsWith('+')
+ ? input.slice(1) // Remove the '+' prefix if it exists
+ : getCapitalizedNameFromEmail(input),
+ ...(input.startsWith('+') ? { phone_number: input } : { email: input }),
};
const {
diff --git a/app/javascript/dashboard/components-next/NewConversation/helpers/specs/composeConversationHelper.spec.js b/app/javascript/dashboard/components-next/NewConversation/helpers/specs/composeConversationHelper.spec.js
index 5a2d0092d..9307e657c 100644
--- a/app/javascript/dashboard/components-next/NewConversation/helpers/specs/composeConversationHelper.spec.js
+++ b/app/javascript/dashboard/components-next/NewConversation/helpers/specs/composeConversationHelper.spec.js
@@ -429,6 +429,28 @@ describe('composeConversationHelper', () => {
email: 'john@example.com',
});
});
+
+ it('creates new contact with phone number', async () => {
+ const mockContact = {
+ id: 1,
+ name: '919999999999',
+ phone_number: '+919999999999',
+ };
+ ContactAPI.create.mockResolvedValue({
+ data: { payload: { contact: mockContact } },
+ });
+
+ const result = await helpers.createNewContact('+919999999999');
+ expect(result).toEqual({
+ id: 1,
+ name: '919999999999',
+ phoneNumber: '+919999999999',
+ });
+ expect(ContactAPI.create).toHaveBeenCalledWith({
+ name: '919999999999',
+ phone_number: '+919999999999',
+ });
+ });
});
describe('fetchContactableInboxes', () => {
diff --git a/app/javascript/dashboard/components-next/taginput/TagInput.vue b/app/javascript/dashboard/components-next/taginput/TagInput.vue
index 63d757415..8988201fb 100644
--- a/app/javascript/dashboard/components-next/taginput/TagInput.vue
+++ b/app/javascript/dashboard/components-next/taginput/TagInput.vue
@@ -1,16 +1,24 @@