let currentPostData = {}; let authToken = null; let negocios_id = null; let negocios_nome = null; let user_id = null; let expires = null; // URL base da API do Bubble no Launchr const API_URL = 'https://launchr.com.br/version-test/api/1.1/wf'; // Recuperar o token e informações armazenadas ao iniciar a extensão chrome.storage.local.get(['authToken', 'negocios_id', 'negocios_nome', 'user_id', 'expires'], (result) => { if (result.authToken) { authToken = result.authToken; negocios_id = result.negocios_id; negocios_nome = result.negocios_nome; user_id = result.user_id; expires = result.expires; } }); // Função para lidar com erros de autenticação function handleAuthError() { // Remover o token e informações armazenadas authToken = null; chrome.storage.local.remove(['authToken', 'negocios_id', 'negocios_nome', 'user_id', 'expires'], () => { console.log('Token de autenticação removido.'); // Opcional: Notificar o usuário sobre a necessidade de login }); } // Listener para mensagens chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === 'storePostData') { currentPostData = request.data || {}; sendResponse({ success: true }); } else if (request.action === 'getPostData') { sendResponse({ data: currentPostData }); } else if (request.action === 'savePost') { const postDataToSave = request.data; let responseSent = false; if (!postDataToSave) { sendResponse({ success: false, error: 'Dados do post não fornecidos.' }); return; } if (!authToken) { handleAuthError(); sendResponse({ success: false, error: 'Usuário não autenticado. Faça login novamente.' }); return true; } const dataToSend = { content: postDataToSave.content, author: postDataToSave.author, authorProfileLink: postDataToSave.authorProfileLink, date: postDataToSave.date, postLink: postDataToSave.postLink, category: postDataToSave.category, user_id: user_id, negocios_id: negocios_id }; fetch(`${API_URL}/novo_swipe_file`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': authToken }, body: JSON.stringify(dataToSend) }) .then(response => { if (response.ok) { return response.json(); } else if (response.status === 401) { handleAuthError(); if (!responseSent) { sendResponse({ success: false, error: 'Token expirado ou inválido. Faça login novamente.' }); responseSent = true; } throw new Error('Token inválido ou expirado.'); } else { return response.json().then(data => { if (!responseSent) { sendResponse({ success: false, error: data.message || 'Erro ao salvar o post.' }); responseSent = true; } throw new Error(data.message || 'Erro na requisição.'); }); } }) .then(data => { console.log('Post salvo com sucesso:', data); if (!responseSent) { sendResponse({ success: true }); responseSent = true; } }) .catch(error => { console.error('Erro ao salvar o post:', error); if (!responseSent) { sendResponse({ success: false, error: 'Erro ao salvar o post.' }); responseSent = true; } }); return true; } else if (request.action === 'login') { console.log('Iniciando o processo de login...'); const { email, password } = request.data || {}; let responseSent = false; if (!email || !password) { sendResponse({ success: false, error: 'E-mail ou senha não fornecidos.' }); console.log('Email ou senha não fornecidos'); return; } fetch(`${API_URL}/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: email, password: password }) }) .then(response => { if (response.ok) { return response.json(); } else { if (!responseSent) { sendResponse({ success: false, error: 'Erro na autenticação. Verifique suas credenciais.' }); responseSent = true; } throw new Error('Erro na autenticação.'); } }) .then(data => { if (data.status === 'success' && data.response && data.response.token) { authToken = 'Bearer ' + data.response.token; negocios_id = data.response.negocios_id; negocios_nome = data.response.negocios_nome; user_id = data.response.user_id; expires = data.response.expires; chrome.storage.local.set({ authToken, negocios_id, negocios_nome, user_id, expires }, () => { console.log('Usuário autenticado com sucesso.'); if (!responseSent) { sendResponse({ success: true }); responseSent = true; } }); } else { console.error('Erro na autenticação:', data); if (!responseSent) { sendResponse({ success: false, error: 'Falha na autenticação. Verifique suas credenciais.' }); responseSent = true; } } }) .catch(error => { console.error('Erro na autenticação:', error); if (!responseSent) { sendResponse({ success: false, error: 'Erro ao realizar o login. Por favor, tente novamente.' }); responseSent = true; } }); return true; } else if (request.action === 'logout') { authToken = null; chrome.storage.local.remove(['authToken', 'negocios_id', 'negocios_nome', 'user_id', 'expires'], () => { console.log('Usuário deslogado com sucesso.'); sendResponse({ success: true }); }); return true; } });