1
0
mirror of https://github.com/kamranahmedse/developer-roadmap.git synced 2025-10-01 19:36:43 +02:00

fix: disable login buttons (#5179)

* fix: disable login buttons

* refactor: remove dead code

* fix: add signup form
This commit is contained in:
Arik Chakma
2024-02-14 17:10:09 +06:00
committed by GitHub
parent 81a14e90eb
commit 4863f08a4c
9 changed files with 116 additions and 61 deletions

View File

@@ -5,12 +5,17 @@ import { TOKEN_COOKIE_NAME } from '../../lib/jwt';
import { httpGet } from '../../lib/http';
import { Spinner } from '../ReactIcons/Spinner.tsx';
type GitHubButtonProps = {};
type GitHubButtonProps = {
isDisabled?: boolean;
setIsDisabled?: (isDisabled: boolean) => void;
};
const GITHUB_REDIRECT_AT = 'githubRedirectAt';
const GITHUB_LAST_PAGE = 'githubLastPage';
export function GitHubButton(props: GitHubButtonProps) {
const { isDisabled, setIsDisabled } = props;
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState('');
@@ -25,6 +30,7 @@ export function GitHubButton(props: GitHubButtonProps) {
}
setIsLoading(true);
setIsDisabled?.(true);
httpGet<{ token: string }>(
`${import.meta.env.PUBLIC_API_URL}/v1-github-callback${
window.location.search
@@ -35,6 +41,7 @@ export function GitHubButton(props: GitHubButtonProps) {
const errMessage = error?.message || 'Something went wrong.';
setError(errMessage);
setIsLoading(false);
setIsDisabled?.(false);
return;
}
@@ -73,11 +80,13 @@ export function GitHubButton(props: GitHubButtonProps) {
.catch((err) => {
setError('Something went wrong. Please try again later.');
setIsLoading(false);
setIsDisabled?.(false);
});
}, []);
const handleClick = async () => {
setIsLoading(true);
setIsDisabled?.(true);
const { response, error } = await httpGet<{ loginUrl: string }>(
`${import.meta.env.PUBLIC_API_URL}/v1-github-login`,
@@ -89,6 +98,7 @@ export function GitHubButton(props: GitHubButtonProps) {
);
setIsLoading(false);
setIsDisabled?.(false);
return;
}
@@ -112,7 +122,7 @@ export function GitHubButton(props: GitHubButtonProps) {
<>
<button
className="inline-flex h-10 w-full items-center justify-center gap-2 rounded border border-slate-300 bg-white p-2 text-sm font-medium text-black outline-none focus:ring-2 focus:ring-[#333] focus:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-60"
disabled={isLoading}
disabled={isLoading || isDisabled}
onClick={handleClick}
>
{isLoading ? (