{"version":3,"file":"static/js/525.c01bccf7.chunk.js","mappings":"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","sources":["ui/components/SEO/SEO.tsx","ui/screens/groupOrder/JoinGroupOrderScreen/JoinGroupOrderScreenViewModel.ts","ui/screens/groupOrder/JoinGroupOrderScreen/JoinGroupOrderScreen.tsx"],"sourcesContent":["import { Helmet } from \"react-helmet\";\n\nexport type SEOProps = {\n description?: string;\n title?: string;\n brandPlacement?: \"end\" | \"start\" | \"none\";\n};\n\nconst SEO = ({ description, title, brandPlacement }: SEOProps) => {\n const brandName = \"Jimmy John's\";\n let titleTemp = \"%s | \" + brandName;\n\n switch (brandPlacement) {\n case \"none\":\n titleTemp = \"%s\";\n break;\n case \"start\":\n titleTemp = brandName + \" | %s\";\n break;\n case \"end\":\n default:\n break;\n }\n return (\n \n {title}\n \n \n );\n};\n\nexport default SEO;\n","import { UnknownError } from \"errors/Errors\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate, useParams, useSearchParams } from \"react-router-dom\";\nimport { useAlert } from \"stores/alert\";\nimport { useOrder } from \"stores/order\";\nimport { useUser } from \"stores/user\";\nimport { MainPagePath } from \"ui/navigation/Pages\";\nimport {\n getStoredGroupOrderParticipantName,\n setStoredGroupOrderParticipantName,\n} from \"util/GroupOrderParticipantNameUtils\";\n\ntype JoinGroupOrderFormSchema = {\n fullName: string;\n};\n\nconst useJoinGroupOrderScreenViewModel = () => {\n const { addErrorAlert } = useAlert();\n const navigate = useNavigate();\n const { getGroupOrder, joinGroupOrder, acceptGroupOrderInvite } = useOrder();\n const { groupOrderId } = useParams();\n const { isLoggedIn, isLoadingUser, user } = useUser();\n const [isLoading, setIsLoading] = useState(true);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const [searchParams] = useSearchParams();\n const participantId = searchParams.get(\"participantId\");\n\n const {\n formState: { errors: fieldErrors },\n handleSubmit,\n register,\n setValue,\n } = useForm();\n\n const startOrder = useCallback(\n async (participantName: string) => {\n if (!groupOrderId) return;\n\n setIsSubmitting(true);\n\n try {\n // fetch the group order details\n const { groupOrderPaymentType } = await getGroupOrder(groupOrderId);\n\n switch (groupOrderPaymentType) {\n case \"host\":\n await joinGroupOrder(groupOrderId);\n break;\n case \"split\": {\n if (!participantId || !participantName) throw new Error(\"Unable to join group order\");\n const { orderId } = await acceptGroupOrderInvite(groupOrderId, participantId, participantName);\n await joinGroupOrder(groupOrderId, orderId);\n break;\n }\n }\n navigate(MainPagePath.menu);\n } catch (e) {\n addErrorAlert(UnknownError.Unknown, e);\n setIsSubmitting(false);\n }\n },\n [acceptGroupOrderInvite, addErrorAlert, getGroupOrder, groupOrderId, joinGroupOrder, navigate, participantId]\n );\n\n const submit = handleSubmit(({ fullName }) => {\n setStoredGroupOrderParticipantName(fullName);\n startOrder(fullName);\n });\n\n // pre-populate name field from previously provided name, if present\n useEffect(() => {\n const name = getStoredGroupOrderParticipantName();\n\n if (!name) return;\n\n setValue(\"fullName\", name);\n }, [setValue]);\n\n // if user is logged-in, skip the name form and join the group order\n useEffect(() => {\n if (isLoadingUser) return;\n\n if (user) {\n const participantName = `${user.firstName} ${user.lastName}`;\n startOrder(participantName);\n return;\n }\n\n setIsLoading(false);\n }, [isLoadingUser, isLoggedIn, startOrder, user]);\n\n return {\n fieldErrors,\n isLoading,\n isSubmitting,\n register,\n submit,\n };\n};\n\nexport default useJoinGroupOrderScreenViewModel;\n","import { LoadingButton } from \"@mui/lab\";\nimport { Box, Stack, Typography } from \"@mui/material\";\nimport ValidationErrorMessages from \"errors/ValidationErrorMessages\";\nimport { observer } from \"mobx-react-lite\";\nimport SEO from \"ui/components/SEO\";\nimport Spinner from \"ui/components/Spinner\";\nimport TextField from \"ui/components/TextField\";\nimport useViewModel from \"ui/screens/groupOrder/JoinGroupOrderScreen/JoinGroupOrderScreenViewModel\";\n\nconst JoinGroupOrderScreen = observer(() => {\n const { fieldErrors, isLoading, isSubmitting, register, submit } = useViewModel();\n\n if (isLoading) return ;\n\n return (\n <>\n \n \n \n \n Join the Group Order\n \n Please provide your name so the host can get your food to you.\n \n \n \n Continue\n \n \n >\n );\n});\n\nexport default JoinGroupOrderScreen;\n"],"names":["_ref","description","title","brandPlacement","brandName","titleTemp","_jsxs","Helmet","defaultTitle","titleTemplate","children","_jsx","name","content","useJoinGroupOrderScreenViewModel","addErrorAlert","useAlert","navigate","useNavigate","getGroupOrder","joinGroupOrder","acceptGroupOrderInvite","useOrder","groupOrderId","useParams","isLoggedIn","isLoadingUser","user","useUser","isLoading","setIsLoading","useState","isSubmitting","setIsSubmitting","searchParams","useSearchParams","participantId","get","formState","errors","fieldErrors","handleSubmit","register","setValue","useForm","startOrder","useCallback","async","groupOrderPaymentType","participantName","Error","orderId","MainPagePath","menu","e","UnknownError","Unknown","submit","fullName","setStoredGroupOrderParticipantName","useEffect","getStoredGroupOrderParticipantName","concat","firstName","lastName","observer","_fieldErrors$fullName","useViewModel","Spinner","_Fragment","SEO","Stack","component","gap","xs","md","Box","Typography","variant","sx","marginBottom","TextField","errorText","message","id","inputProps","maxLength","label","required","ValidationErrorMessages","Default","FieldIsRequired","LoadingButton","loading","onClick","type"],"sourceRoot":""}