85 lines
2.4 KiB
JavaScript
85 lines
2.4 KiB
JavaScript
// Background script for service worker
|
|
// Currently minimal, can be extended for additional functionality
|
|
|
|
function setupContextMenus() {
|
|
chrome.contextMenus.removeAll(() => {
|
|
if (chrome.runtime.lastError) {
|
|
console.warn('FB Tracker: context menu reset warning:', chrome.runtime.lastError.message);
|
|
}
|
|
|
|
chrome.contextMenus.create({
|
|
id: 'fb-tracker-reparse',
|
|
title: 'FB Tracker: Post neu parsen',
|
|
contexts: ['all'],
|
|
documentUrlPatterns: ['*://*.facebook.com/*']
|
|
});
|
|
|
|
chrome.contextMenus.create({
|
|
id: 'fb-tracker-selection-ai',
|
|
title: 'FB Tracker: Auswahl mit AI beantworten',
|
|
contexts: ['selection'],
|
|
documentUrlPatterns: ['*://*.facebook.com/*']
|
|
});
|
|
});
|
|
}
|
|
|
|
chrome.runtime.onInstalled.addListener((details) => {
|
|
console.log('Facebook Post Tracker extension installed/updated');
|
|
|
|
if (details.reason === 'install') {
|
|
chrome.storage.sync.get(['profileNumber'], (result) => {
|
|
if (!result.profileNumber) {
|
|
chrome.storage.sync.set({ profileNumber: 1 });
|
|
}
|
|
});
|
|
}
|
|
|
|
setupContextMenus();
|
|
});
|
|
|
|
if (chrome.runtime.onStartup) {
|
|
chrome.runtime.onStartup.addListener(() => {
|
|
setupContextMenus();
|
|
});
|
|
}
|
|
|
|
// Ensure menus exist after service worker restarts
|
|
setupContextMenus();
|
|
|
|
chrome.contextMenus.onClicked.addListener((info, tab) => {
|
|
if (info.menuItemId === 'fb-tracker-reparse') {
|
|
chrome.tabs.sendMessage(tab.id, {
|
|
type: 'reparsePost',
|
|
x: info.pageX || 0,
|
|
y: info.pageY || 0
|
|
});
|
|
} else if (info.menuItemId === 'fb-tracker-selection-ai') {
|
|
chrome.tabs.sendMessage(tab.id, {
|
|
type: 'generateSelectionAI',
|
|
selectionText: info.selectionText || ''
|
|
}, (response) => {
|
|
if (chrome.runtime.lastError) {
|
|
console.warn('FB Tracker selection AI error:', chrome.runtime.lastError.message);
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
});
|
|
|
|
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
|
if (message && message.type === 'captureScreenshot') {
|
|
const windowId = sender && sender.tab ? sender.tab.windowId : chrome.windows.WINDOW_ID_CURRENT;
|
|
|
|
chrome.tabs.captureVisibleTab(windowId, { format: 'jpeg', quality: 80 }, (imageData) => {
|
|
if (chrome.runtime.lastError) {
|
|
sendResponse({ error: chrome.runtime.lastError.message });
|
|
return;
|
|
}
|
|
|
|
sendResponse({ imageData });
|
|
});
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|