feat: initial release of Brightwheel Memories & Reports Exporter Chrome extension
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Brightwheel Exporter - Service Worker (Background Script)
|
||||
* Manifest V3
|
||||
*/
|
||||
|
||||
chrome.runtime.onInstalled.addListener(() => {
|
||||
console.log('[Brightwheel Exporter] Extension installed.');
|
||||
});
|
||||
|
||||
// Handle incoming messages from popup, dashboard, or content scripts
|
||||
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
||||
if (message.action === 'OPEN_DASHBOARD') {
|
||||
const dashboardUrl = chrome.runtime.getURL('dashboard/dashboard.html');
|
||||
|
||||
// Check if dashboard is already open
|
||||
chrome.tabs.query({ url: dashboardUrl }, (tabs) => {
|
||||
if (tabs && tabs.length > 0) {
|
||||
chrome.tabs.update(tabs[0].id, { active: true });
|
||||
if (tabs[0].windowId) {
|
||||
chrome.windows.update(tabs[0].windowId, { focused: true });
|
||||
}
|
||||
} else {
|
||||
chrome.tabs.create({ url: dashboardUrl });
|
||||
}
|
||||
sendResponse({ success: true });
|
||||
});
|
||||
return true; // Keep message channel open for async response
|
||||
}
|
||||
|
||||
if (message.action === 'DOWNLOAD_BLOB_URL') {
|
||||
chrome.downloads.download({
|
||||
url: message.url,
|
||||
filename: message.filename,
|
||||
saveAs: true
|
||||
}, (downloadId) => {
|
||||
if (chrome.runtime.lastError) {
|
||||
sendResponse({ success: false, error: chrome.runtime.lastError.message });
|
||||
} else {
|
||||
sendResponse({ success: true, downloadId });
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
if (message.action === 'GET_BRIGHTWHEEL_TABS') {
|
||||
chrome.tabs.query({ url: 'https://schools.mybrightwheel.com/*' }, (tabs) => {
|
||||
sendResponse({ tabs: tabs || [] });
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user