Files
Rafi Arrafif f5f0bb8c58
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 1m2s
🚸 ux: handle duplicate email account error flow
2026-02-19 17:17:23 +07:00

52 lines
1.6 KiB
TypeScript

"use client";
import { Spinner } from "@/shared/libs/shadcn/ui/spinner";
import { submitProviderCallback } from "@/features/authCallback/actions/submitProviderCallback";
import { useParams, useSearchParams } from "next/navigation";
import { useEffect, useState } from "react";
const AuthCallbackIndex = () => {
const { name } = useParams();
const queries = useSearchParams().toString();
const [textDescription, setTextDescription] = useState(
"We are processing your authentication.",
);
const finishOAuthFlow = (type: string, message?: string) => {
setTimeout(() => {
if (!window.opener) window.location.href = "/";
window.opener.postMessage(
{ type: type, message: message },
window.location.origin,
);
window.close();
}, 1000);
};
useEffect(() => {
(async () => {
const response = await submitProviderCallback(name as string, queries);
if (response.success) {
setTextDescription("Authentication successful! Redirecting...");
finishOAuthFlow("oauth-success", response.message);
} else {
setTextDescription("Authentication failed. Please try again.");
finishOAuthFlow("oauth-failed", response.message);
}
})();
}, [name, queries]);
return (
<div className="w-full flex flex-col items-center gap-2 pt-8">
<Spinner className="size-6" />
<div className="text-center">
<h1 className="text-neutral-200 text-base">Please wait...</h1>
<p className="font-normal text-neutral-400 text-sm">
{textDescription}
</p>
</div>
</div>
);
};
export default AuthCallbackIndex;