import React, { useEffect, useState } from "react"; import QRCode from "qrcode.react"; import openSocket from "socket.io-client"; import toastError from "../../errors/toastError"; import { Dialog, DialogContent, Paper, Typography } from "@material-ui/core"; import { i18n } from "../../translate/i18n"; import api from "../../services/api"; const QrcodeModal = ({ open, onClose, whatsAppId }) => { const [qrCode, setQrCode] = useState(""); useEffect(() => { const fetchSession = async () => { if (!whatsAppId) return; try { const { data } = await api.get(`/whatsapp/${whatsAppId}`); setQrCode(data.qrcode); } catch (err) { toastError(err); } }; fetchSession(); }, [whatsAppId]); useEffect(() => { if (!whatsAppId) return; const socket = openSocket(process.env.REACT_APP_BACKEND_URL); socket.on("whatsappSession", data => { if (data.action === "update" && data.session.id === whatsAppId) { setQrCode(data.session.qrcode); } if (data.action === "update" && data.session.qrcode === "") { onClose(); } }); return () => { socket.disconnect(); }; }, [whatsAppId, onClose]); return ( {i18n.t("qrCode.message")} {qrCode ? ( ) : ( Waiting for QR Code )} ); }; export default React.memo(QrcodeModal);