ISMIS Helper: cross-browser build, CI, PDF fixes, Chrome download fix #1
@@ -0,0 +1,38 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
importScripts('libs/pdf-lib.min.js', 'parsers.js', 'pdf.js');
|
||||||
|
|
||||||
|
function errMsg(err) {
|
||||||
|
return String((err && err.message) || err);
|
||||||
|
}
|
||||||
|
|
||||||
|
browser.runtime.onMessage.addListener((msg, sender, sendResponse) => {
|
||||||
|
if (msg && msg.type === 'scrape-study-load') {
|
||||||
|
browser.tabs.query({ active: true, currentWindow: true })
|
||||||
|
.then((tabs) => {
|
||||||
|
const tab = tabs[0];
|
||||||
|
if (!tab || tab.id == null) throw new Error('No active tab.');
|
||||||
|
return browser.tabs.sendMessage(tab.id, { type: 'scrape-study-load' });
|
||||||
|
})
|
||||||
|
.then((data) => sendResponse(data))
|
||||||
|
.catch((err) => sendResponse({ ok: false, error: errMsg(err) }));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg && msg.type === 'generate-pdf') {
|
||||||
|
generatePdf(msg.data)
|
||||||
|
.then(() => sendResponse({ ok: true }))
|
||||||
|
.catch((err) => sendResponse({ ok: false, error: errMsg(err) }));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function generatePdf(data) {
|
||||||
|
const bytes = await ISMIStools.buildStudyLoadPdf(data);
|
||||||
|
const blob = new Blob([bytes], { type: 'application/pdf' });
|
||||||
|
const url = URL.createObjectURL(blob);
|
||||||
|
const name = (data.header && data.header.fullName) || 'Student';
|
||||||
|
const filename = 'Study Load - ' + name + '.pdf';
|
||||||
|
await browser.downloads.download({ url, filename, saveAs: true });
|
||||||
|
setTimeout(() => URL.revokeObjectURL(url), 10000);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user