diff --git a/.DS_Store b/.DS_Store index ba6abe3..92a39fe 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/background.js b/background.js index b87cbc4..0e0756a 100644 --- a/background.js +++ b/background.js @@ -6,7 +6,7 @@ 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'; +const API_URL = 'https://launchr.com.br/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) => { @@ -21,12 +21,13 @@ chrome.storage.local.get(['authToken', 'negocios_id', 'negocios_nome', 'user_id' // 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 - }); + chrome.storage.local.remove( + ['authToken', 'negocios_id', 'negocios_nome', 'user_id', 'expires'], + () => { + console.log('Token removido devido a erro de autenticação'); + } + ); } // Listener para mensagens @@ -194,24 +195,64 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { return true; } else if (request.action === 'saveSwipeFile') { + // Verificar se temos um token válido + if (!authToken) { + sendResponse({ + success: false, + error: 'Usuário não autenticado. Por favor, faça login novamente.' + }); + return true; + } + fetch(`${API_URL}/novo_swipe_file`, { method: 'POST', headers: { 'Content-Type': 'application/json', - 'Authorization': authToken + 'Authorization': authToken // Garantir que o token está no formato correto }, - body: JSON.stringify(request.data) + body: JSON.stringify({ + negocio_id: request.data.negocio_id, + conteudo: request.data.conteudo, + nome_autor: request.data.nome_autor, + link_autor: request.data.link_autor, + link_post: request.data.link_post + }) }) .then(response => { - if (!response.ok) throw new Error('Erro na requisição'); + if (response.status === 401) { + // Token expirado ou inválido + handleAuthError(); // Função que limpa o token e força novo login + throw new Error('Sessão expirada. Por favor, faça login novamente.'); + } + if (!response.ok) { + throw new Error('Erro na requisição: ' + response.status); + } return response.json(); }) .then(data => { - sendResponse({ success: true, data }); + if (data.response && data.response.swipe_file_id) { + chrome.storage.local.set({ + lastSwipeFileId: data.response.swipe_file_id + }); + sendResponse({ + success: true, + swipeFileId: data.response.swipe_file_id + }); + } else { + throw new Error('Resposta inválida da API'); + } }) .catch(error => { console.error('Erro ao salvar swipe file:', error); - sendResponse({ success: false, error: error.message }); + sendResponse({ + success: false, + error: error.message || 'Erro ao salvar o swipe file' + }); + + // Se for erro de autenticação, redirecionar para login + if (error.message.includes('401') || error.message.includes('expirada')) { + chrome.runtime.sendMessage({ action: 'showLogin' }); + } }); return true; diff --git a/popup.html b/popup.html index a26f757..87691bc 100644 --- a/popup.html +++ b/popup.html @@ -5,6 +5,47 @@