UNPKG

react-telegram-login

Version:
80 lines (73 loc) 1.94 kB
// @flow import React from "react"; import PropTypes from "prop-types"; class TelegramLoginButton extends React.Component { constructor(props) { super(props); } 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?9"; 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 ( <div className={this.props.className} ref={(component) => { this.instance = component; }} > {this.props.children} </div> ); } } 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;