1 |
- {"version":3,"file":"86262.js","mappings":"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","sources":["webpack://quran.com/./src/components/Login/CompleteSignupForm.module.scss","webpack://quran.com/./src/components/FormBuilder/buildFormBuilderFormField.ts","webpack://quran.com/./src/components/Login/CompleteSignupForm.tsx","webpack://quran.com/./src/components/Login/EmailVerificationForm.tsx"],"sourcesContent":["// Exports\nmodule.exports = {\n\t\"container\": \"CompleteSignupForm_container__WWUVf\",\n\t\"title\": \"CompleteSignupForm_title__nNTvk\",\n\t\"strong\": \"CompleteSignupForm_strong__XIUxt\",\n\t\"emailSent\": \"CompleteSignupForm_emailSent__Nlle8\"\n};\n","import capitalize from 'lodash/capitalize';\nimport { Translate } from 'next-translate';\n\nimport { FormBuilderFormField } from './FormBuilderTypes';\n\nimport FormField, { FormFieldType } from 'types/FormField';\n\n/**\n * Transform FormField to be FormBuilderFormField\n *\n * FormField and FormBuilderFormField are the same except, FormBuilderFormField is not tied to errorId and translationId\n * - Previously FormBuilder was tied to common.json, next-translate.\n * - and it's also tied to ErrorMessageId\n * - and the `label` is also less flexible because it's tied to `field` value\n *\n * This function help to transform FormField to FormBuilderFormField for common use case.\n * But when we need a more flexible use case, we can use FormBuilderFormField directly. Without using this helper function\n *\n * check ./FormBuilderTypes.ts for more info\n *\n * Note that this function expect the `t` translate function to be used with `common.json`. And expect `form.$field` and `validation.$errorId` to exist.\n *\n * @param {FormField} formField\n * @returns {FormBuilderFormField} formBuilderFormField\n */\nconst buildFormBuilderFormField = (formField: FormField, t: Translate): FormBuilderFormField => {\n return {\n ...formField,\n ...(formField.rules && {\n rules: formField.rules.map((rule) => ({\n type: rule.type,\n value: rule.value,\n errorMessage: t(`common:validation.${rule.errorId}`, {\n field: capitalize(formField.field),\n ...rule.errorExtraParams,\n }),\n })),\n }),\n ...(formField.label && {\n label:\n formField.type === FormFieldType.Checkbox ? formField.label : t(`form.${formField.label}`),\n }),\n ...(formField.defaultValue && { defaultValue: formField.defaultValue }),\n ...(formField.placeholder && { placeholder: formField.placeholder }),\n };\n};\n\nexport default buildFormBuilderFormField;\n","import useTranslation from 'next-translate/useTranslation';\nimport { useSWRConfig } from 'swr';\n\nimport buildFormBuilderFormField from '../FormBuilder/buildFormBuilderFormField';\nimport FormBuilder from '../FormBuilder/FormBuilder';\n\nimport styles from './CompleteSignupForm.module.scss';\nimport EmailVerificationForm from './EmailVerificationForm';\n\nimport { completeSignup } from '@/utils/auth/api';\nimport { makeUserProfileUrl } from '@/utils/auth/apiPaths';\nimport { logFormSubmission } from '@/utils/eventLogger';\nimport FormField from 'types/FormField';\n\ntype CompleteSignupFormProps = {\n requiredFields: FormField[];\n};\n\n/**\n * If users' email is empty, return email verification form\n * otherwise, return normal user information form\n */\n\nconst CompleteSignupForm: React.FC<CompleteSignupFormProps> = ({ requiredFields }) => {\n const { mutate } = useSWRConfig();\n const { t } = useTranslation('common');\n\n const onSubmit = (data) => {\n logFormSubmission('complete_signUp');\n completeSignup(data).then(() => {\n // mutate the cache version of users/profile\n mutate(makeUserProfileUrl());\n });\n };\n\n const emailFormField = requiredFields.find((field) => field.field === 'email');\n const isEmailRequired = !!emailFormField;\n if (isEmailRequired) {\n return (\n <EmailVerificationForm\n emailFormField={buildFormBuilderFormField(\n { ...emailFormField, placeholder: t(`form.email`) },\n t,\n )}\n />\n );\n }\n\n return (\n <div className={styles.container}>\n <h2 className={styles.title}>{t('complete-sign-up')}</h2>\n <FormBuilder\n formFields={requiredFields.map((field) =>\n buildFormBuilderFormField({ ...field, placeholder: t(`form.${field.field}`) }, t),\n )}\n onSubmit={onSubmit}\n actionText={t('submit')}\n />\n </div>\n );\n};\n\nexport default CompleteSignupForm;\n","import { useState } from 'react';\n\nimport Trans from 'next-translate/Trans';\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSWRConfig } from 'swr';\n\nimport buildTranslatedErrorMessageByErrorId from '../FormBuilder/buildTranslatedErrorMessageByErrorId';\nimport FormBuilder from '../FormBuilder/FormBuilder';\nimport { FormBuilderFormField } from '../FormBuilder/FormBuilderTypes';\n\nimport styles from './CompleteSignupForm.module.scss';\nimport ResendEmailSection from './ResendEmailSection';\n\nimport { completeSignup, requestVerificationCode } from '@/utils/auth/api';\nimport { makeUserProfileUrl } from '@/utils/auth/apiPaths';\nimport { logFormSubmission } from '@/utils/eventLogger';\nimport ErrorMessageId from 'types/ErrorMessageId';\nimport { RuleType } from 'types/FieldRule';\nimport { FormFieldType } from 'types/FormField';\n\ntype EmailVerificationFormProps = {\n emailFormField: FormBuilderFormField;\n};\ntype EmailFormData = {\n email: string;\n};\n\ntype VerificationCodeFormData = {\n code: string;\n};\n\nconst EmailVerificationForm = ({ emailFormField }: EmailVerificationFormProps) => {\n const [isSubmitted, setIsSubmitted] = useState(false);\n const { mutate } = useSWRConfig();\n const [email, setEmail] = useState<string>();\n const { t } = useTranslation('common');\n const [forceRerenderKey, setForceRerenderKey] = useState(0);\n\n const onEmailSubmitted = (data: EmailFormData) => {\n logFormSubmission('email_verification');\n requestVerificationCode(data.email);\n setIsSubmitted(true);\n setEmail(data.email);\n };\n\n const verificationCodeFormField: FormBuilderFormField = {\n field: 'code',\n type: FormFieldType.Number,\n placeholder: t('form.code'),\n rules: [\n {\n type: RuleType.Required,\n value: true,\n errorMessage: buildTranslatedErrorMessageByErrorId(ErrorMessageId.RequiredField, 'code', t),\n },\n ],\n };\n\n const onVerificationCodeSubmitted = (data: VerificationCodeFormData) => {\n logFormSubmission('verification_code');\n return completeSignup({ email, verificationCode: data.code.toString() })\n .then(() => {\n // mutate the cache version of users/profile\n mutate(makeUserProfileUrl());\n })\n .catch(async (err) => {\n const result = { errors: { code: err?.message } };\n return result;\n });\n };\n\n const onResendEmailRequested = () => {\n requestVerificationCode(email);\n setForceRerenderKey((preVal) => preVal + 1);\n };\n\n return (\n <div className={styles.container}>\n <h2 className={styles.title}>{t('email-verification.email-verification')}</h2>\n {isSubmitted ? (\n <>\n <p className={styles.emailSent}>\n <Trans\n i18nKey=\"common:email-verification.email-sent\"\n values={{ email }}\n components={{\n strong: <strong className={styles.strong} />,\n }}\n />\n </p>\n <FormBuilder\n formFields={[verificationCodeFormField]}\n onSubmit={onVerificationCodeSubmitted}\n actionText={t('common:email-verification.verify-code')}\n />\n\n <ResendEmailSection\n key={forceRerenderKey}\n onResendButtonClicked={onResendEmailRequested}\n />\n </>\n ) : (\n <FormBuilder\n formFields={[emailFormField]}\n onSubmit={onEmailSubmitted}\n actionText={t('submit')}\n />\n )}\n </div>\n );\n};\n\nexport default EmailVerificationForm;\n"],"names":["capitalize","FormFieldType","buildFormBuilderFormField","formField","t","rules","map","rule","type","value","errorMessage","errorId","field","errorExtraParams","label","Checkbox","defaultValue","placeholder","useTranslation","useSWRConfig","FormBuilder","styles","EmailVerificationForm","completeSignup","makeUserProfileUrl","logFormSubmission","CompleteSignupForm","requiredFields","mutate","onSubmit","data","then","emailFormField","find","isEmailRequired","div","className","container","h2","title","formFields","actionText","useState","Trans","buildTranslatedErrorMessageByErrorId","ResendEmailSection","requestVerificationCode","ErrorMessageId","RuleType","isSubmitted","setIsSubmitted","email","setEmail","forceRerenderKey","setForceRerenderKey","onEmailSubmitted","verificationCodeFormField","Number","Required","RequiredField","onVerificationCodeSubmitted","verificationCode","code","toString","catch","err","result","errors","message","onResendEmailRequested","preVal","p","emailSent","i18nKey","values","components","strong","onResendButtonClicked"],"sourceRoot":""}
|