import React from "react"; import styled from "styled-components"; import type { SocialLoginType } from "ee/constants/SocialLogin"; import { getSocialLoginButtonProps } from "ee/utils/signupHelpers"; import type { EventName } from "ee/utils/analyticsUtilTypes"; import AnalyticsUtil from "ee/utils/AnalyticsUtil"; import { useLocation } from "react-router-dom"; import PerformanceTracker, { PerformanceTransactionName, } from "utils/PerformanceTracker"; import { Button } from "@appsmith/ads"; import { isTenantConfig } from "ee/utils/adminSettingsHelpers"; import { useSelector } from "react-redux"; import { getTenantConfig } from "ee/selectors/tenantSelectors"; const ThirdPartyAuthWrapper = styled.div` display: flex; gap: var(--ads-v2-spaces-3); width: 100%; flex-wrap: wrap; `; const StyledButton = styled(Button)` flex: 1 0 171px; `; type SignInType = "SIGNIN" | "SIGNUP"; const startIcon: { [key: string]: string; } = { Google: "google-colored", Github: "github-fill", }; function SocialLoginButton(props: { logo: string; name: string; url: string; type: SignInType; }) { const tenantConfiguration = useSelector(getTenantConfig); const location = useLocation(); const queryParams = new URLSearchParams(location.search); let url = props.url; const redirectUrl = queryParams.get("redirectUrl"); if (redirectUrl != null) { url += `?redirectUrl=${encodeURIComponent(redirectUrl)}`; } let buttonLabel = props.name; if (props.name && isTenantConfig(props.name)) { buttonLabel = tenantConfiguration[props.name]; } return ( { let eventName: EventName = "LOGIN_CLICK"; if (props.type === "SIGNUP") { eventName = "SIGNUP_CLICK"; } PerformanceTracker.startTracking( eventName === "SIGNUP_CLICK" ? PerformanceTransactionName.SIGN_UP : PerformanceTransactionName.LOGIN_CLICK, { name: props.name.toUpperCase() }, ); AnalyticsUtil.logEvent(eventName, { loginMethod: props.name.toUpperCase(), }); }} renderAs="a" size="md" startIcon={ ["Google", "Github"].includes(props.name) ? startIcon[props.name] : "key-2-line" } >
{buttonLabel}
); } function ThirdPartyAuth(props: { logins: SocialLoginType[]; type: SignInType; }) { const socialLoginButtons = getSocialLoginButtonProps(props.logins).map( (item) => { return ; }, ); return {socialLoginButtons}; } export default ThirdPartyAuth;