From ca05be1c1a91bb2763159ae2b95e604eed771872 Mon Sep 17 00:00:00 2001 From: iamsivin Date: Fri, 22 Nov 2024 09:03:07 +0530 Subject: [PATCH] chore: Decamelize keys on contact update --- .../Contacts/Pages/ContactDetails.vue | 2 +- .../Contacts/Pages/ContactsList.vue | 2 +- .../components-next/label/story/fixtures.js | 6 ---- .../dashboard/i18n/locale/en/contact.json | 1 - .../store/modules/contacts/actions.js | 8 ++++- package.json | 1 + pnpm-lock.yaml | 32 +++++++++++++++++++ 7 files changed, 42 insertions(+), 10 deletions(-) diff --git a/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue b/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue index e43fb92c9..32aedca5d 100644 --- a/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue +++ b/app/javascript/dashboard/components-next/Contacts/Pages/ContactDetails.vue @@ -63,7 +63,7 @@ const updateContact = async updatedData => { const handleFormUpdate = debounce( updatedData => updateContact(updatedData), - 500, + 600, false ); diff --git a/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue b/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue index 3be194847..95493feee 100644 --- a/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue +++ b/app/javascript/dashboard/components-next/Contacts/Pages/ContactsList.vue @@ -27,7 +27,7 @@ const updateContact = async ({ id, updatedData }) => { const handleFormUpdate = debounce( ({ id, updatedData }) => updateContact({ id, updatedData }), - 500, + 600, false ); diff --git a/app/javascript/dashboard/components-next/label/story/fixtures.js b/app/javascript/dashboard/components-next/label/story/fixtures.js index ba61d45bf..980ba8c0d 100644 --- a/app/javascript/dashboard/components-next/label/story/fixtures.js +++ b/app/javascript/dashboard/components-next/label/story/fixtures.js @@ -9,7 +9,6 @@ export const labelMenuItems = [ label: 'delivery', value: 3, thumbnail: { - name: 'delivery', color: '#A2FDD5', }, isSelected: true, @@ -19,7 +18,6 @@ export const labelMenuItems = [ label: 'lead', value: 6, thumbnail: { - name: 'lead', color: '#F161C8', }, isSelected: false, @@ -29,7 +27,6 @@ export const labelMenuItems = [ label: 'ops-handover', value: 4, thumbnail: { - name: 'ops-handover', color: '#A53326', }, isSelected: false, @@ -39,7 +36,6 @@ export const labelMenuItems = [ label: 'billing', value: 1, thumbnail: { - name: 'billing', color: '#28AD21', }, isSelected: false, @@ -49,7 +45,6 @@ export const labelMenuItems = [ label: 'premium-customer', value: 5, thumbnail: { - name: 'premium-customer', color: '#6FD4EF', }, isSelected: false, @@ -59,7 +54,6 @@ export const labelMenuItems = [ label: 'software', value: 2, thumbnail: { - name: 'software', color: '#8F6EF2', }, isSelected: false, diff --git a/app/javascript/dashboard/i18n/locale/en/contact.json b/app/javascript/dashboard/i18n/locale/en/contact.json index 5cdb9b321..6cf151b6a 100644 --- a/app/javascript/dashboard/i18n/locale/en/contact.json +++ b/app/javascript/dashboard/i18n/locale/en/contact.json @@ -448,7 +448,6 @@ "SHOWING": "Showing {startItem} - {endItem} of {totalItems} contacts" }, "CARD": { - "OF": "of", "VIEW_DETAILS": "View details", "EDIT_DETAILS_FORM": { "TITLE": "Edit contact details", diff --git a/app/javascript/dashboard/store/modules/contacts/actions.js b/app/javascript/dashboard/store/modules/contacts/actions.js index 0169f2f2b..bde93a77c 100644 --- a/app/javascript/dashboard/store/modules/contacts/actions.js +++ b/app/javascript/dashboard/store/modules/contacts/actions.js @@ -4,6 +4,7 @@ import { } from 'shared/helpers/CustomErrors'; import types from '../../mutation-types'; import ContactAPI from '../../../api/contacts'; +import decamelizeKeys from 'decamelize-keys'; import AccountActionsAPI from '../../../api/accountActions'; import AnalyticsHelper from '../../../helper/AnalyticsHelper'; import { CONTACTS_EVENTS } from '../../../helper/AnalyticsHelper/events'; @@ -90,11 +91,16 @@ export const actions = { }, update: async ({ commit }, { id, isFormData = false, ...contactParams }) => { + const decamelizedContactParams = decamelizeKeys(contactParams, { + deep: true, + }); commit(types.SET_CONTACT_UI_FLAG, { isUpdating: true }); try { const response = await ContactAPI.update( id, - isFormData ? buildContactFormData(contactParams) : contactParams + isFormData + ? buildContactFormData(decamelizedContactParams) + : decamelizedContactParams ); commit(types.EDIT_CONTACT, response.data.payload); commit(types.SET_CONTACT_UI_FLAG, { isUpdating: false }); diff --git a/package.json b/package.json index fc2de8c7d..dd510c69b 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "countries-and-timezones": "^3.6.0", "date-fns": "2.21.1", "date-fns-tz": "^1.3.3", + "decamelize-keys": "^2.0.1", "dompurify": "3.1.6", "floating-vue": "^5.2.2", "highlight.js": "^11.10.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed87f5009..25d5e8c67 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -118,6 +118,9 @@ importers: date-fns-tz: specifier: ^1.3.3 version: 1.3.8(date-fns@2.21.1) + decamelize-keys: + specifier: ^2.0.1 + version: 2.0.1 dompurify: specifier: 3.1.6 version: 3.1.6 @@ -2428,6 +2431,14 @@ packages: supports-color: optional: true + decamelize-keys@2.0.1: + resolution: {integrity: sha512-nrNeSCtU2gV3Apcmn/EZ+aR20zKDuNDStV67jPiupokD3sOAFeMzslLMCFdKv1sPqzwoe5ZUhsSW9IAVgKSL/Q==} + engines: {node: '>=14.16'} + + decamelize@6.0.0: + resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -3479,6 +3490,10 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + map-obj@5.0.0: resolution: {integrity: sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4659,6 +4674,10 @@ packages: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + type-fest@4.26.1: resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} @@ -7492,6 +7511,15 @@ snapshots: dependencies: ms: 2.1.3 + decamelize-keys@2.0.1: + dependencies: + decamelize: 6.0.0 + map-obj: 4.3.0 + quick-lru: 6.1.2 + type-fest: 3.13.1 + + decamelize@6.0.0: {} + decimal.js@10.4.3: {} deep-eql@5.0.2: {} @@ -8804,6 +8832,8 @@ snapshots: dependencies: semver: 7.6.3 + map-obj@4.3.0: {} + map-obj@5.0.0: {} markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): @@ -10081,6 +10111,8 @@ snapshots: type-fest@1.4.0: {} + type-fest@3.13.1: {} + type-fest@4.26.1: {} typed-array-buffer@1.0.0: