diff --git a/app/root.tsx b/app/root.tsx index 1e6ba5b..c58c500 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -76,7 +76,7 @@ export function App() { } }, [toast, notify]) return ( - +
diff --git a/app/routes/search.tsx b/app/routes/search.tsx index fab9454..9d21bfe 100644 --- a/app/routes/search.tsx +++ b/app/routes/search.tsx @@ -6,7 +6,7 @@ import { prisma } from '~/db.server' import { Card, CardContent } from '~/components/ui/card' import { Avatar, AvatarFallback, AvatarImage } from '~/components/ui/avatar' import { Badge } from '~/components/ui/badge' -import { MapPin, Star } from 'lucide-react' +import { MapPin, MoveUpRight, Star } from 'lucide-react' import { Tooltip, TooltipContent, @@ -19,6 +19,7 @@ import { getUpcomingDateSchedules, } from '~/utils/schedule' import { formatDistance } from 'date-fns' +import React, { useEffect } from 'react' export const meta: MetaFunction = () => { return [ @@ -104,6 +105,7 @@ export async function loader({ request }: LoaderFunctionArgs) { export default function Search() { const [searchParams] = useSearchParams() const { doctors } = useLoaderData
diff --git a/app/routes/signup.tsx b/app/routes/signup.tsx
index b2e7d5e..25b0760 100644
--- a/app/routes/signup.tsx
+++ b/app/routes/signup.tsx
@@ -11,6 +11,7 @@ import { z } from 'zod'
import bcrypt from 'bcryptjs'
import { prisma } from '~/db.server'
import {
+ ConfirmPasswordSchema,
EmailSchema,
PasswordSchema,
UsernameSchema,
@@ -25,25 +26,27 @@ const SignupFormSchema = z
username: UsernameSchema,
email: EmailSchema,
password: PasswordSchema,
- confirmPassword: PasswordSchema,
- agreeToTermsOfServiceAndPrivacyPolicy: z.boolean({
- required_error:
- 'You must agree to the terms of service and privacy policy',
- }),
- remember: z.boolean().optional(),
+ confirmPassword: ConfirmPasswordSchema,
+ agreeToTermsOfServiceAndPrivacyPolicy: z
+ .string({ required_error: 'You must agree to the terms of service' })
+ .refine(value => value === 'true', {
+ message: 'You must agree to the terms of service and privacy policy',
+ }),
+ remember: z.string().optional(),
})
.superRefine(({ confirmPassword, password }, ctx) => {
if (confirmPassword !== password) {
ctx.addIssue({
path: ['confirmPassword'],
code: 'custom',
- message: 'The passwords must match',
+ message: 'Passwords do not match',
})
}
})
export async function action({ request }: ActionFunctionArgs) {
const formData = await request.formData()
+ console.log('formData in action', Object.fromEntries(formData))
// await validateCSRF(formData, request.headers)
// checkHoneypot(formData)
const submission = await parseWithZod(formData, {
@@ -95,7 +98,7 @@ export async function action({ request }: ActionFunctionArgs) {
return redirect('/', {
headers: {
'set-cookie': await sessionStorage.commitSession(cookieSession, {
- expires: remember ? getSessionExpirationDate() : undefined,
+ expires: remember === 'true' ? getSessionExpirationDate() : undefined,
}),
},
})
@@ -113,6 +116,7 @@ export default function SignupRoute() {
id: 'signup-form',
lastResult: actionData,
onValidate({ formData }) {
+ console.log('formData', Object.fromEntries(formData))
return parseWithZod(formData, { schema: SignupFormSchema })
},
shouldRevalidate: 'onBlur',
@@ -184,10 +188,12 @@ export default function SignupRoute() {
'Do you agree to our Terms of Service and Privacy Policy?',
}}
// @ts-expect-error @ts-ignore
- buttonProps={getInputProps(
- fields.agreeToTermsOfServiceAndPrivacyPolicy,
- { type: 'checkbox' },
- )}
+ buttonProps={{
+ ...getInputProps(fields.agreeToTermsOfServiceAndPrivacyPolicy, {
+ type: 'checkbox',
+ }),
+ value: 'true',
+ }}
errors={fields.agreeToTermsOfServiceAndPrivacyPolicy.errors}
/>