summaryrefslogtreecommitdiff
path: root/apps/web/src/hooks/auth/useSignUp.ts
diff options
context:
space:
mode:
authormuhammed sinan <muhammedsinan7749@gmail.com>2025-06-27 10:46:35 +0530
committermuhammed sinan <muhammedsinan7749@gmail.com>2025-06-27 10:46:35 +0530
commit8934cc610f192a7a9e9aac59457b6c2e8d5ebbb4 (patch)
tree518e913332d584adc682af3d03487c7c3b0cb62d /apps/web/src/hooks/auth/useSignUp.ts
parentcdfb5ea7b07bf150eefcfcfa7c9890a5e1f41218 (diff)
downloadopencut-8934cc610f192a7a9e9aac59457b6c2e8d5ebbb4.tar.gz
refactor: added auth hooks for handling sign and signup logics
Diffstat (limited to 'apps/web/src/hooks/auth/useSignUp.ts')
-rw-r--r--apps/web/src/hooks/auth/useSignUp.ts65
1 files changed, 65 insertions, 0 deletions
diff --git a/apps/web/src/hooks/auth/useSignUp.ts b/apps/web/src/hooks/auth/useSignUp.ts
new file mode 100644
index 00000000..4cd2850a
--- /dev/null
+++ b/apps/web/src/hooks/auth/useSignUp.ts
@@ -0,0 +1,65 @@
+import { useState, useCallback } from "react";
+import { useRouter } from "next/navigation";
+import { signUp, signIn } from "@opencut/auth/client";
+
+export function useSignUp() {
+ const router = useRouter();
+ const [name, setName] = useState("");
+ 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 handleSignUp = useCallback(async () => {
+ setError(null);
+ setIsEmailLoading(true);
+
+ const { error } = await signUp.email({
+ name,
+ email,
+ password,
+ });
+
+ if (error) {
+ setError(error.message || "An unexpected error occurred.");
+ setIsEmailLoading(false);
+ return;
+ }
+
+ router.push("/login");
+ }, [name, email, password, router]);
+
+ const handleGoogleSignUp = useCallback(async () => {
+ setError(null);
+ setIsGoogleLoading(true);
+
+ try {
+ await signIn.social({
+ provider: "google",
+ });
+
+ router.push("/editor");
+ } catch (error) {
+ setError("Failed to sign up with Google. Please try again.");
+ setIsGoogleLoading(false);
+ }
+ }, [router]);
+
+ const isAnyLoading = isEmailLoading || isGoogleLoading;
+
+ return {
+ name,
+ setName,
+ email,
+ setEmail,
+ password,
+ setPassword,
+ error,
+ isEmailLoading,
+ isGoogleLoading,
+ isAnyLoading,
+ handleSignUp,
+ handleGoogleSignUp,
+ };
+} \ No newline at end of file