Files
PostTracker/extension/popup.js
2025-10-04 16:30:22 +02:00

100 lines
2.6 KiB
JavaScript

const profileSelect = document.getElementById('profileSelect');
const statusEl = document.getElementById('status');
function apiFetch(url, options = {}) {
const config = {
...options,
credentials: 'include'
};
if (options && options.headers) {
config.headers = { ...options.headers };
}
return fetch(url, config);
}
async function fetchProfileState() {
try {
const response = await apiFetch(`${API_BASE_URL}/api/profile-state`);
if (!response.ok) {
return null;
}
const data = await response.json();
if (data && typeof data.profile_number !== 'undefined') {
const parsed = parseInt(data.profile_number, 10);
if (!Number.isNaN(parsed)) {
return parsed;
}
}
return null;
} catch (error) {
console.warn('Profile state fetch failed:', error);
return null;
}
}
async function updateProfileState(profileNumber) {
try {
const response = await apiFetch(`${API_BASE_URL}/api/profile-state`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ profile_number: profileNumber })
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
} catch (error) {
console.error('Failed to update profile state:', error);
}
}
function updateStatus(message, saved = false) {
statusEl.textContent = message;
statusEl.className = saved ? 'status saved' : 'status';
}
async function initProfileSelect() {
const backendProfile = await fetchProfileState();
if (backendProfile) {
profileSelect.value = String(backendProfile);
chrome.storage.sync.set({ profileNumber: backendProfile });
updateStatus(`Profil ${backendProfile} ausgewählt`);
return;
}
chrome.storage.sync.get(['profileNumber'], (result) => {
const profileNumber = result.profileNumber || 1;
profileSelect.value = String(profileNumber);
updateStatus(`Profil ${profileNumber} ausgewählt (lokal)`);
});
}
initProfileSelect();
function reloadFacebookTabs() {
chrome.tabs.query({ url: ['https://www.facebook.com/*', 'https://facebook.com/*'] }, (tabs) => {
tabs.forEach(tab => {
chrome.tabs.reload(tab.id);
});
});
}
document.getElementById('saveBtn').addEventListener('click', async () => {
const profileNumber = parseInt(profileSelect.value, 10);
chrome.storage.sync.set({ profileNumber }, async () => {
updateStatus(`Profil ${profileNumber} gespeichert!`, true);
await updateProfileState(profileNumber);
reloadFacebookTabs();
});
});
document.getElementById('webInterfaceBtn').addEventListener('click', () => {
chrome.tabs.create({ url: API_BASE_URL });
});