// api/whatsapp_server_android.js - Versão para Android
const express = require('express');
const { Client, LocalAuth } = require('whatsapp-web.js');
const qrcode = require('qrcode-terminal');
const fs = require('fs');
const path = require('path');

const app = express();
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ extended: true, limit: '50mb' }));

// Configuração para Android
const client = new Client({
    authStrategy: new LocalAuth({
        dataPath: path.join(__dirname, 'session_android')
    }),
    puppeteer: {
        headless: true,
        args: [
            '--no-sandbox',
            '--disable-setuid-sandbox',
            '--disable-dev-shm-usage',
            '--disable-accelerated-2d-canvas',
            '--no-first-run',
            '--no-zygote',
            '--single-process',
            '--disable-gpu',
            '--disable-web-security',
            '--disable-features=VizDisplayCompositor'
        ]
    }
});

let isReady = false;
let qrCode = null;

client.on('qr', (qr) => {
    qrCode = qr;
    console.log('\n📱 ESCANEIE O QR CODE COM O WHATSAPP:');
    qrcode.generate(qr, { small: true });
    console.log('\nOu acesse: https://wa.me/qr/' + qr);
});

client.on('ready', () => {
    isReady = true;
    qrCode = null;
    console.log('✅ WhatsApp conectado com sucesso!');
    console.log('📱 Pronto para enviar relatórios!');
});

client.on('authenticated', () => {
    console.log('🔐 Autenticado com sucesso');
});

client.on('auth_failure', (msg) => {
    console.error('❌ Falha na autenticação:', msg);
    isReady = false;
});

client.on('disconnected', (reason) => {
    console.log('⚠️ Desconectado:', reason);
    isReady = false;
    console.log('🔄 Reinicie o servidor para reconectar');
});

client.initialize();

// API Endpoints
app.get('/api/status', (req, res) => {
    res.json({
        connected: isReady,
        qr: qrCode,
        timestamp: new Date().toISOString()
    });
});

app.post('/api/send-message', async (req, res) => {
    const { telefone, mensagem } = req.body;
    
    if (!isReady) {
        return res.json({ success: false, error: 'WhatsApp não conectado' });
    }
    
    try {
        const chatId = `${telefone}@c.us`;
        await client.sendMessage(chatId, mensagem);
        res.json({ success: true, message: 'Mensagem enviada!' });
    } catch (error) {
        res.json({ success: false, error: error.message });
    }
});

const PORT = 3000;
app.listen(PORT, '0.0.0.0', () => {
    console.log(`🚀 Servidor WhatsApp rodando na porta ${PORT}`);
    console.log(`📱 Acesse: http://localhost:${PORT}/api/status`);
});

process.on('SIGINT', async () => {
    console.log('⚠️ Desligando...');
    await client.destroy();
    process.exit(0);
});