summaryrefslogtreecommitdiff
path: root/apps/web/src/hooks/auth/useSignUp.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/useSignUp.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/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