diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue b/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue
index 4e4cdfa02..9873dab81 100644
--- a/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue
+++ b/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue
@@ -58,12 +58,12 @@ const onClickViewDetails = () => {
{{
name
}}
-
+
{{
t('CONTACTS_LAYOUT.CARD.OF')
}}
- {{ additionalAttributes.company_name }}
+ {{ additionalAttributes.companyName }}
diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue b/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue
index b3e06bb9c..701278187 100644
--- a/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue
+++ b/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue
@@ -76,23 +76,37 @@ const validationRules = {
const v$ = useVuelidate(validationRules, state);
const updateState = () => {
- const [firstName = '', lastName = ''] = (props.contactData.name || '').split(
- ' '
- );
+ const {
+ id,
+ name = '',
+ email: emailAddress,
+ phoneNumber,
+ additionalAttributes: {
+ description,
+ companyName,
+ countryCode,
+ country,
+ city,
+ socialProfiles = {},
+ } = {},
+ } = props.contactData || {};
+
+ const [firstName = '', lastName = ''] = name.split(' ');
+
Object.assign(state, {
- id: props.contactData.id,
- name: props.contactData.name,
+ id,
+ name,
firstName,
lastName,
- email: props.contactData.email,
- phone_number: props.contactData.phoneNumber,
+ email: emailAddress,
+ phone_number: phoneNumber,
additional_attributes: {
- ...state.additional_attributes,
- ...props.contactData.additionalAttributes,
- social_profiles: {
- ...state.additional_attributes.social_profiles,
- ...props.contactData.additionalAttributes?.social_profiles,
- },
+ description,
+ company_name: companyName,
+ country_code: countryCode,
+ country,
+ city,
+ social_profiles: socialProfiles,
},
});
};
@@ -165,7 +179,8 @@ const getFormBinding = key => {
const isFormValid = await v$.value.$validate();
if (isFormValid) {
- emit('update', state);
+ const { firstName, lastName, ...stateWithoutNames } = state;
+ emit('update', stateWithoutNames);
}
},
});
diff --git a/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue b/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue
index 2bcbe1282..121a85341 100644
--- a/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue
+++ b/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue
@@ -28,27 +28,18 @@ const confirmDeleteContactDialogRef = ref(null);
const selectedContactData = computed(() => {
if (!props.selectedContact) return {};
- const {
- phone_number: phoneNumber = {},
- additional_attributes: additionalAttributes = {},
- } = props.selectedContact;
-
- return {
- ...props.selectedContact,
- phoneNumber,
- additionalAttributes,
- };
+ return props.selectedContact;
});
const createdAt = computed(() => {
- return props.selectedContact?.created_at
- ? dynamicTime(props.selectedContact.created_at)
+ return props.selectedContact?.createdAt
+ ? dynamicTime(props.selectedContact.createdAt)
: '';
});
const lastActivityAt = computed(() => {
- return props.selectedContact?.last_activity_at
- ? dynamicTime(props.selectedContact.last_activity_at)
+ return props.selectedContact?.lastActivityAt
+ ? dynamicTime(props.selectedContact.lastActivityAt)
: '';
});
diff --git a/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue b/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue
index f67856344..e02e72b4b 100644
--- a/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue
+++ b/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue
@@ -1,5 +1,6 @@
@@ -102,7 +108,7 @@ onMounted(() => {
@@ -115,6 +121,10 @@ onMounted(() => {
@tab-changed="handleTabChange"
/>
+
record.attribute_model === attributeModel
);
},
+ getAttributesByModelType: _state => attributeModel => {
+ const records = _state.records.filter(
+ record => record.attribute_model === attributeModel
+ );
+ return camelcaseKeys(records, { deep: true });
+ },
};
export const actions = {
diff --git a/app/javascript/dashboard/store/modules/contacts/getters.js b/app/javascript/dashboard/store/modules/contacts/getters.js
index e8fb54b98..89bc6d22e 100644
--- a/app/javascript/dashboard/store/modules/contacts/getters.js
+++ b/app/javascript/dashboard/store/modules/contacts/getters.js
@@ -4,6 +4,12 @@ export const getters = {
getContacts($state) {
return $state.sortOrder.map(contactId => $state.records[contactId]);
},
+ getContactsList($state) {
+ const contacts = $state.sortOrder.map(
+ contactId => $state.records[contactId]
+ );
+ return camelcaseKeys(contacts, { deep: true });
+ },
getUIFlags($state) {
return $state.uiFlags;
},
@@ -13,7 +19,7 @@ export const getters = {
},
getContactById: $state => id => {
const contact = $state.records[id];
- return camelcaseKeys(contact || {});
+ return camelcaseKeys(contact || {}, { deep: true });
},
getMeta: $state => {
return $state.meta;