summaryrefslogtreecommitdiff
path: root/apps/web/src/hooks/auth/useLogin.ts
diff options
context:
space:
mode:
authorMaze <167211895+mazeincoding@users.noreply.github.com>2025-06-28 12:44:01 +0200
committerGitHub <noreply@github.com>2025-06-28 12:44:01 +0200
commit306c2885f1c34a8fb16c0a499efebcd4cb796c93 (patch)
treee872398f16eb00fe2a303a6f73655476314cac24 /apps/web/src/hooks/auth/useLogin.ts
parent5a6872537e526ed4b5d0c428c31e28f1d60ac471 (diff)
parent901d0baafdaaa1dd133cb59621acdd35c78885a5 (diff)
downloadopencut-306c2885f1c34a8fb16c0a499efebcd4cb796c93.tar.gz
Merge pull request #141 from sinanptm/code-refactoring
fix(issue): Adress the issue(#109)
Diffstat (limited to 'apps/web/src/hooks/auth/useLogin.ts')
-rw-r--r--apps/web/src/hooks/auth/useLogin.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/apps/web/src/hooks/auth/useLogin.ts b/apps/web/src/hooks/auth/useLogin.ts
new file mode 100644
index 00000000..3737deb3
--- /dev/null
+++ b/apps/web/src/hooks/auth/useLogin.ts
@@ -0,0 +1,60 @@
+import { useCallback, useState } from "react";
+import { useRouter } from "next/navigation";
+import { signIn } from "@opencut/auth/client";
+
+export function useLogin() {
+ const router = useRouter();
+ const [email, setEmail] = useState("");
+ const [password, setPassword] = useState("");
+ const [error, setError] = useState<string | null>(null);
+ const [isEmailLoading, setIsEmailLoading] = useState(false);
+ const [isGoogleLoading, setIsGoogleLoading] = useState(false);
+
+ const handleLogin = useCallback(async () => {
+ setError(null);
+ setIsEmailLoading(true);
+
+ const { error } = await signIn.email({
+ email,
+ password,
+ });
+
+ if (error) {
+ setError(error.message || "An unexpected error occurred.");
+ setIsEmailLoading(false);
+ return;
+ }
+
+ router.push("/editor");
+ }, [router, email, password]);
+
+ const handleGoogleLogin = async () => {
+ setError(null);
+ setIsGoogleLoading(true);
+
+ try {
+ await signIn.social({
+ provider: "google",
+ callbackURL: "/editor",
+ });
+ } catch (error) {
+ setError("Failed to sign in with Google. Please try again.");
+ setIsGoogleLoading(false);
+ }
+ };
+
+ const isAnyLoading = isEmailLoading || isGoogleLoading;
+
+ return {
+ email,
+ setEmail,
+ password,
+ setPassword,
+ error,
+ isEmailLoading,
+ isGoogleLoading,
+ isAnyLoading,
+ handleLogin,
+ handleGoogleLogin,
+ };
+}