From 548d92c2fc324c680780c53a7d5972353736075b Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Tue, 11 Feb 2025 02:04:00 +1100 Subject: [PATCH] fix: wip --- .../app/components/forms/reset-password.tsx | 11 +- .../forms/send-confirmation-email.tsx | 7 +- apps/remix/app/root.tsx | 9 +- .../app/routes/_unauthenticated+/signin.tsx | 25 +- .../app/routes/_unauthenticated+/signup.tsx | 19 +- apps/remix/app/routes/embed+/_layout.tsx | 16 + apps/remix/package.json | 7 +- apps/remix/vite.config.ts | 27 +- lingui.config.ts | 3 +- package-lock.json | 2189 +++++++++-------- package.json | 2 +- packages/api/package.json | 2 +- packages/auth/client/index.ts | 8 + packages/auth/server/routes/email-password.ts | 19 +- packages/auth/server/types/email-password.ts | 6 + packages/email/mailer.ts | 17 +- packages/email/package.json | 8 +- packages/email/render.tsx | 9 +- .../lib/client-only/providers/i18n-server.tsx | 2 +- packages/lib/translations/.gitignore | 1 + packages/lib/utils/env.ts | 19 +- packages/lib/utils/i18n.ts | 6 +- 22 files changed, 1260 insertions(+), 1152 deletions(-) diff --git a/apps/remix/app/components/forms/reset-password.tsx b/apps/remix/app/components/forms/reset-password.tsx index a8b3deb2d..7930d4e9f 100644 --- a/apps/remix/app/components/forms/reset-password.tsx +++ b/apps/remix/app/components/forms/reset-password.tsx @@ -3,11 +3,12 @@ import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import { useForm } from 'react-hook-form'; +import { useNavigate } from 'react-router'; import { match } from 'ts-pattern'; import { z } from 'zod'; +import { authClient } from '@documenso/auth/client'; import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error'; -import { trpc } from '@documenso/trpc/react'; import { ZPasswordSchema } from '@documenso/trpc/server/auth-router/schema'; import { cn } from '@documenso/ui/lib/utils'; import { Button } from '@documenso/ui/primitives/button'; @@ -55,15 +56,15 @@ export const ResetPasswordForm = ({ className, token }: ResetPasswordFormProps) const isSubmitting = form.formState.isSubmitting; - const { mutateAsync: resetPassword } = trpc.profile.resetPassword.useMutation(); - const onFormSubmit = async ({ password }: Omit) => { try { - await resetPassword({ + await authClient.emailPassword.resetPassword({ password, token, }); + await navigate('/signin'); + form.reset(); toast({ @@ -71,8 +72,6 @@ export const ResetPasswordForm = ({ className, token }: ResetPasswordFormProps) description: _(msg`Your password has been updated successfully.`), duration: 5000, }); - - navigate('/signin'); } catch (err) { const error = AppError.parseError(err); diff --git a/apps/remix/app/components/forms/send-confirmation-email.tsx b/apps/remix/app/components/forms/send-confirmation-email.tsx index a8e043340..337890de4 100644 --- a/apps/remix/app/components/forms/send-confirmation-email.tsx +++ b/apps/remix/app/components/forms/send-confirmation-email.tsx @@ -5,7 +5,7 @@ import { Trans } from '@lingui/react/macro'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; -import { trpc } from '@documenso/trpc/react'; +import { authClient } from '@documenso/auth/client'; import { cn } from '@documenso/ui/lib/utils'; import { Button } from '@documenso/ui/primitives/button'; import { @@ -42,11 +42,9 @@ export const SendConfirmationEmailForm = ({ className }: SendConfirmationEmailFo const isSubmitting = form.formState.isSubmitting; - const { mutateAsync: sendConfirmationEmail } = trpc.profile.sendConfirmationEmail.useMutation(); - const onFormSubmit = async ({ email }: TSendConfirmationEmailFormSchema) => { try { - await sendConfirmationEmail({ email }); + await authClient.emailPassword.resendVerifyEmail({ email }); toast({ title: _(msg`Confirmation email sent`), @@ -59,6 +57,7 @@ export const SendConfirmationEmailForm = ({ className }: SendConfirmationEmailFo form.reset(); } catch (err) { toast({ + variant: 'destructive', title: _(msg`An error occurred while sending your confirmation email`), description: _(msg`Please try again and make sure you enter the correct email address.`), }); diff --git a/apps/remix/app/root.tsx b/apps/remix/app/root.tsx index 2c3c7f223..d3e08e5fb 100644 --- a/apps/remix/app/root.tsx +++ b/apps/remix/app/root.tsx @@ -17,6 +17,7 @@ import { getOptionalLoaderSession } from 'server/utils/get-loader-session'; import { SessionProvider } from '@documenso/lib/client-only/providers/session'; import { APP_I18N_OPTIONS, type SupportedLanguageCodes } from '@documenso/lib/constants/i18n'; +import { createPublicEnv } from '@documenso/lib/utils/env'; import { extractLocaleData } from '@documenso/lib/utils/i18n'; import { TrpcProvider } from '@documenso/trpc/react'; import { Toaster } from '@documenso/ui/primitives/toaster'; @@ -99,9 +100,7 @@ export async function loader({ request }: Route.LoaderArgs) { lang, theme: getTheme(), session, - __ENV__: Object.fromEntries( - Object.entries(process.env).filter(([key]) => key.startsWith('NEXT_')), // Todo: I'm pretty sure this will leak? - ), + publicEnv: createPublicEnv(), }, { headers: { @@ -112,7 +111,7 @@ export async function loader({ request }: Route.LoaderArgs) { } export function Layout({ children }: { children: React.ReactNode }) { - const { __ENV__, theme, lang } = useLoaderData() || {}; + const { publicEnv, theme, lang } = useLoaderData() || {}; // const [theme] = useTheme(); @@ -145,7 +144,7 @@ export function Layout({ children }: { children: React.ReactNode }) {