diff --git a/apps/web/components/login.tsx b/apps/web/components/login.tsx
index 147d1cb99..724ecba03 100644
--- a/apps/web/components/login.tsx
+++ b/apps/web/components/login.tsx
@@ -34,20 +34,30 @@ export default function Login() {
const onSubmit = async (values: LoginValues) => {
setErrorMessage(null);
- const res = await signIn<"credentials">("credentials", {
- ...values,
- callbackUrl,
- redirect: false,
- });
+ const res = await toast.promise(
+ signIn<"credentials">("credentials", {
+ ...values,
+ callbackUrl,
+ redirect: false,
+ }),
+ {
+ loading: "Loggin in...",
+ success: "Login successful.",
+ error: "Could not log in :/",
+ },
+ {
+ style: {
+ minWidth: "200px",
+ },
+ }
+ );
if (!res) {
setErrorMessage("error");
toast.error("Something went wrong.");
}
// we're logged in! let's do a hard refresh to the desired url
else if (!res.error) {
- router.push(callbackUrl).then(() => {
- toast.success("Login successful");
- });
+ router.push(callbackUrl);
// toast.error("error");
}
// fallback if error not found
@@ -89,7 +99,7 @@ export default function Login() {
autoComplete="email"
required
className="relative block w-full appearance-none rounded-none rounded-t-md border border-gray-300 px-3 py-2 text-gray-900 placeholder-gray-500 focus:z-10 focus:border-neon focus:outline-none focus:ring-neon sm:text-sm"
- placeholder="Email address"
+ placeholder="Email"
/>
@@ -156,7 +166,7 @@ export default function Login() {
-
+ {/* */}
>
);
}
diff --git a/apps/web/components/navigation.tsx b/apps/web/components/navigation.tsx
index 3b7535fa3..2bf6c8abf 100644
--- a/apps/web/components/navigation.tsx
+++ b/apps/web/components/navigation.tsx
@@ -51,9 +51,22 @@ const userNavigation = [
href: "",
click: async (e: any) => {
e.preventDefault();
- const res: any = await signOut({ callbackUrl: "/login" }).finally(() => {
- if (!res?.error) toast.success("Logout successful");
- });
+ const res: any = await toast.promise(
+ signOut({ callbackUrl: "/login" }),
+ {
+ loading: "Logging out",
+ success: "Your are logged out.",
+ error: "Could not log out :/",
+ },
+ {
+ style: {
+ minWidth: "200px",
+ },
+ success: {
+ duration: 10000,
+ },
+ }
+ );
},
icon: ArrowRightOnRectangleIcon,
},
@@ -229,7 +242,7 @@ export default function TopNavigation() {
>
)}
-
+ {/* */}
>
);
}
diff --git a/apps/web/components/signup.tsx b/apps/web/components/signup.tsx
index 8c45d014e..c4c65a087 100644
--- a/apps/web/components/signup.tsx
+++ b/apps/web/components/signup.tsx
@@ -2,7 +2,7 @@ import { XCircleIcon } from "@heroicons/react/24/outline";
import { signIn } from "next-auth/react";
import Link from "next/link";
import { FormProvider, SubmitHandler, useForm } from "react-hook-form";
-import { Toast, Toaster } from "react-hot-toast";
+import { toast, Toast, Toaster } from "react-hot-toast";
import Logo from "./logo";
@@ -29,26 +29,37 @@ export default function Signup() {
};
const signUp: SubmitHandler = async (data) => {
- // methods.clearErrors();
- await fetch("/api/auth/signup", {
- body: JSON.stringify({
- ...data,
- }),
- headers: {
- "Content-Type": "application/json",
- },
- method: "POST",
- })
- .then(handleErrors)
- .then(async () => {
- await signIn<"credentials">("credentials", {
+ const res = await toast.promise(
+ fetch("/api/auth/signup", {
+ body: JSON.stringify({
...data,
- callbackUrl: "http://localhost:3000/dashboard",
- });
+ }),
+ headers: {
+ "Content-Type": "application/json",
+ },
+ method: "POST",
})
- .catch((err) => {
- methods.setError("apiError", { message: err.message });
- });
+ .then(handleErrors)
+ .then(async () => {
+ await signIn<"credentials">("credentials", {
+ ...data,
+ callbackUrl: "http://localhost:3000/dashboard",
+ });
+ })
+ .catch((err) => {
+ methods.setError("apiError", { message: err.message });
+ }),
+ {
+ loading: "Creating your account...",
+ success: "Done!",
+ error: (err) => err.message,
+ },
+ {
+ style: {
+ minWidth: "200px",
+ },
+ }
+ );
};
function renderApiError() {
@@ -202,7 +213,7 @@ export default function Signup() {
-
+ {/* */}
>
);
}
diff --git a/apps/web/pages/_app.tsx b/apps/web/pages/_app.tsx
index 3ae2996cf..5422e7ee9 100644
--- a/apps/web/pages/_app.tsx
+++ b/apps/web/pages/_app.tsx
@@ -4,6 +4,7 @@ import type { AppProps } from "next/app";
import { NextPage } from "next";
import { SessionProvider } from "next-auth/react";
export { coloredConsole } from "@documenso/lib";
+import { Toaster } from "react-hot-toast";
export type NextPageWithLayout = NextPage
& {
getLayout?: (page: ReactElement) => ReactNode;
@@ -20,6 +21,7 @@ export default function App({
const getLayout = Component.getLayout || ((page: any) => page);
return (
+
{getLayout()}
);