{"version":3,"file":"C_Xz4Gm1.js","sources":["../../../../src/components/dialog/editProfile/useEditProfile.ts"],"sourcesContent":["import { useDialogStore } from '@/stores/useDialogStore';\nimport type { ErrorIdent } from '@/@types/errorIdents';\nimport { useUserContext } from '@/stores/useUserContext';\nimport { useSecureSessionPost } from '@/composables/dataFetching/genericFetchers';\nimport type {\n Result,\n PostBody,\n} from '@/server/api/[site]/user/account/editProfile.post';\nimport { handleLoadingError } from '~/utils/handleLoadingError';\n\nexport async function useEditProfile() {\n const dialogStore = useDialogStore();\n const { t } = useTrans();\n dialogStore.setHeadline(t('user.account.profile.editDialog.headline'));\n const userContext = useUserContext();\n\n const data = await userContext.loadAccountData();\n if (!data.canEdit) dialogStore.closeDialog();\n\n const customerTypeOptions = [\n {\n label: data.customerType.name,\n value: data.customerType.id,\n },\n ];\n\n const site = useSiteIdent();\n const errors = ref([]);\n const isLoading = ref(false);\n interface editProfileForm {\n billingEmail: string;\n customerNumber: string;\n customerType: { label: string; value: string };\n firstName: string;\n lastName: string;\n phone: {\n phoneCountry: string;\n phoneNumber: string;\n fullPhoneNumber: string;\n };\n title: string;\n taxId: string;\n hasTaxId: boolean;\n }\n\n async function onSubmit(formData: editProfileForm) {\n if (data.canEdit) {\n isLoading.value = true;\n await editProfile(formData);\n isLoading.value = false;\n }\n }\n\n async function editProfile(formData: editProfileForm) {\n try {\n isLoading.value = true;\n const postData: PostBody = {};\n if (formData.billingEmail !== data.billingEmail)\n postData.billingEmail = formData.billingEmail;\n if (formData.firstName !== data.firstName)\n postData.firstName = formData.firstName;\n if (formData.lastName !== data.lastName)\n postData.lastName = formData.lastName;\n if (formData.title !== data.title) postData.title = formData.title;\n if (formData.phone.fullPhoneNumber !== data.phoneNumber) {\n postData.phoneNumber = formData.phone.fullPhoneNumber;\n }\n\n const result = await useSecureSessionPost(\n `/api/${site}/user/account/editProfile`,\n postData,\n );\n if (result) {\n await userContext.loadAccountData(true);\n dialogStore.closeDialog();\n }\n\n isLoading.value = false;\n } catch (e: any) {\n errors.value = e.data.data.errors;\n document.querySelector('.js-error-container')?.scrollIntoView({\n behavior: 'smooth',\n });\n isLoading.value = false;\n handleLoadingError(e);\n }\n }\n\n return {\n onSubmit,\n errors,\n customerTypeOptions,\n data,\n isLoading,\n };\n}\n"],"names":["useEditProfile","dialogStore","useDialogStore","t","useTrans","userContext","useUserContext","data","customerTypeOptions","site","useSiteIdent","errors","ref","isLoading","onSubmit","formData","editProfile","postData","useSecureSessionPost","e","_a","handleLoadingError"],"mappings":"oGAUA,eAAsBA,GAAiB,CACrC,MAAMC,EAAcC,IACd,CAAE,EAAAC,GAAMC,IACFH,EAAA,YAAYE,EAAE,0CAA0C,CAAC,EACrE,MAAME,EAAcC,IAEdC,EAAO,MAAMF,EAAY,kBAC1BE,EAAK,SAASN,EAAY,YAAY,EAE3C,MAAMO,EAAsB,CAC1B,CACE,MAAOD,EAAK,aAAa,KACzB,MAAOA,EAAK,aAAa,EAC3B,CAAA,EAGIE,EAAOC,IACPC,EAASC,EAAkB,CAAA,CAAE,EAC7BC,EAAYD,EAAI,EAAK,EAiB3B,eAAeE,EAASC,EAA2B,CAC7CR,EAAK,UACPM,EAAU,MAAQ,GAClB,MAAMG,EAAYD,CAAQ,EAC1BF,EAAU,MAAQ,GAEtB,CAEA,eAAeG,EAAYD,EAA2B,OAChD,GAAA,CACFF,EAAU,MAAQ,GAClB,MAAMI,EAAqB,CAAA,EACvBF,EAAS,eAAiBR,EAAK,eACjCU,EAAS,aAAeF,EAAS,cAC/BA,EAAS,YAAcR,EAAK,YAC9BU,EAAS,UAAYF,EAAS,WAC5BA,EAAS,WAAaR,EAAK,WAC7BU,EAAS,SAAWF,EAAS,UAC3BA,EAAS,QAAUR,EAAK,QAAOU,EAAS,MAAQF,EAAS,OACzDA,EAAS,MAAM,kBAAoBR,EAAK,cACjCU,EAAA,YAAcF,EAAS,MAAM,iBAGzB,MAAMG,EACnB,QAAQT,CAAI,4BACZQ,CAAA,IAGM,MAAAZ,EAAY,gBAAgB,EAAI,EACtCJ,EAAY,YAAY,GAG1BY,EAAU,MAAQ,SACXM,EAAQ,CACRR,EAAA,MAAQQ,EAAE,KAAK,KAAK,QAClBC,EAAA,SAAA,cAAc,qBAAqB,IAAnC,MAAAA,EAAsC,eAAe,CAC5D,SAAU,QAAA,GAEZP,EAAU,MAAQ,GAClBQ,EAAmBF,CAAC,CACtB,CACF,CAEO,MAAA,CACL,SAAAL,EACA,OAAAH,EACA,oBAAAH,EACA,KAAAD,EACA,UAAAM,CAAA,CAEJ"}