({
prepopulateFormValues,
token,
orgSlug,
isGoogleLoginEnabled,
isSAMLLoginEnabled,
orgAutoAcceptEmail,
redirectUrl,
emailVerificationEnabled,
onboardingV3Enabled,
}: SignupProps)
| 183 | } |
| 184 | |
| 185 | export default function Signup({ |
| 186 | prepopulateFormValues, |
| 187 | token, |
| 188 | orgSlug, |
| 189 | isGoogleLoginEnabled, |
| 190 | isSAMLLoginEnabled, |
| 191 | orgAutoAcceptEmail, |
| 192 | redirectUrl, |
| 193 | emailVerificationEnabled, |
| 194 | onboardingV3Enabled, |
| 195 | }: SignupProps) { |
| 196 | const isOrgInviteByLink = orgSlug && !prepopulateFormValues?.username; |
| 197 | const [isSamlSignup, setIsSamlSignup] = useState(false); |
| 198 | const [premiumUsername, setPremiumUsername] = useState(false); |
| 199 | const [usernameTaken, setUsernameTaken] = useState(false); |
| 200 | const [isGoogleLoading, setIsGoogleLoading] = useState(false); |
| 201 | const [accountUnderReview, setAccountUnderReview] = useState(false); |
| 202 | const [displayEmailForm, setDisplayEmailForm] = useState(token); |
| 203 | const [turnstileKey, setTurnstileKey] = useState(0); |
| 204 | const searchParams = useCompatSearchParams(); |
| 205 | const { t, i18n } = useLocale(); |
| 206 | const router = useRouter(); |
| 207 | const formMethods = useForm<FormValues>({ |
| 208 | resolver: zodResolver(signupSchema), |
| 209 | defaultValues: prepopulateFormValues satisfies FormValues, |
| 210 | mode: "onTouched", |
| 211 | }); |
| 212 | const { |
| 213 | register, |
| 214 | watch, |
| 215 | formState: { isSubmitting, errors, isSubmitSuccessful }, |
| 216 | } = formMethods; |
| 217 | |
| 218 | useEffect(() => { |
| 219 | if (redirectUrl) { |
| 220 | localStorage.setItem("onBoardingRedirect", redirectUrl); |
| 221 | } |
| 222 | }, [redirectUrl]); |
| 223 | |
| 224 | const [userConsentToCookie, setUserConsentToCookie] = useState(false); // No need to be checked for user to proceed |
| 225 | |
| 226 | function handleConsentChange(consent: boolean) { |
| 227 | setUserConsentToCookie(!consent); |
| 228 | } |
| 229 | |
| 230 | const loadingSubmitState = isSubmitSuccessful || isSubmitting; |
| 231 | const displayBackButton = token ? false : displayEmailForm; |
| 232 | |
| 233 | const isPlatformUser = redirectUrl?.includes("platform") && redirectUrl?.includes("new"); |
| 234 | |
| 235 | const signUp: SubmitHandler<FormValues> = async (_data) => { |
| 236 | const { cfToken, ...data } = _data; |
| 237 | |
| 238 | posthog.capture("signup_form_submitted", { |
| 239 | has_token: !!token, |
| 240 | is_org_invite: isOrgInviteByLink, |
| 241 | org_slug: orgSlug, |
| 242 | is_premium_username: premiumUsername, |
nothing calls this directly
no test coverage detected