Files
ColdBreeze-chat-web/src/routes/login/OidcLoginEntry.tsx
T
2022-07-08 19:13:49 +08:00

31 lines
899 B
TypeScript

import { useEffect, FC } from "react";
import { useGetOpenidMutation } from "../../app/services/auth";
import { OIDCConfig } from "../../types/auth";
import { StyledSocialButton } from "./styled";
const OidcLoginEntry: FC<{ issuer: OIDCConfig }> = ({ issuer }) => {
const [getOpenId, { data, isLoading, isSuccess }] = useGetOpenidMutation();
const handleSolidLogin = () => {
getOpenId({
issuer: issuer.domain,
redirect_uri: `${location.origin}/#/login`
});
};
useEffect(() => {
if (isSuccess && data) {
const { url } = data;
location.href = url;
}
}, [data, isSuccess]);
return (
<StyledSocialButton disabled={isLoading} onClick={handleSolidLogin}>
{Boolean(issuer.favicon) && <img src={issuer.favicon} className="icon" alt="icon" />}
Login with {issuer.domain}
</StyledSocialButton>
);
};
export default OidcLoginEntry;