import React from "react"; import PropTypes from "prop-types"; class TelegramLoginButton extends React.Component { componentDidMount() { const { botName, buttonSize, cornerRadius, requestAccess, usePic, dataOnAuth, dataAuthUrl, lang, } = this.props; window.TelegramLoginWidget = { dataOnAuth: (user) => dataOnAuth(user), }; const script = document.createElement("script"); script.src = "https://telegram.org/js/telegram-widget.js?14"; script.setAttribute("data-telegram-login", botName); script.setAttribute("data-size", buttonSize); if (cornerRadius !== undefined) { script.setAttribute("data-radius", cornerRadius); } script.setAttribute("data-request-access", requestAccess); script.setAttribute("data-userpic", usePic); script.setAttribute("data-lang", lang); if (dataAuthUrl !== undefined) { script.setAttribute("data-auth-url", dataAuthUrl); } else { script.setAttribute( "data-onauth", "TelegramLoginWidget.dataOnAuth(user)" ); } script.async = true; this.instance.appendChild(script); } render() { return (
{ this.instance = component; }} > {this.props.children}
); } } TelegramLoginButton.propTypes = { botName: PropTypes.string.isRequired, dataOnauth: PropTypes.func, buttonSize: PropTypes.oneOf(["large", "medium", "small"]), cornerRadius: PropTypes.number, requestAccess: PropTypes.string, usePic: PropTypes.bool, lang: PropTypes.string, }; TelegramLoginButton.defaultProps = { botName: "samplebot", dataOnauth: () => undefined, buttonSize: "large", requestAccess: "write", usePic: true, lang: "en", }; export default TelegramLoginButton;