aboutsummaryrefslogtreecommitdiff
path: root/html/item_preview.js
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-01-31 18:06:13 +0100
committerWojtek Kosior <koszko@koszko.org>2022-01-31 18:06:13 +0100
commitad69f9c86b950cc84ca103e65824b9c9129d3999 (patch)
treea4314c8a5031b9fb2a278021b2388b86190c2823 /html/item_preview.js
parent4c6a2323d90e9321ec2b78e226167b3013ea69ab (diff)
downloadbrowser-extension-ad69f9c86b950cc84ca103e65824b9c9129d3999.tar.gz
browser-extension-ad69f9c86b950cc84ca103e65824b9c9129d3999.zip
add support for testing with other browsers (especially Abrowser and Librewolf)
There are still some spurious failures when running under those newer browsers. Those will be systematically investigated and fixed.
Diffstat (limited to 'html/item_preview.js')
-rw-r--r--html/item_preview.js46
1 files changed, 10 insertions, 36 deletions
diff --git a/html/item_preview.js b/html/item_preview.js
index dccf2d4..c55183c 100644
--- a/html/item_preview.js
+++ b/html/item_preview.js
@@ -44,10 +44,10 @@
#IMPORT common/indexeddb.js AS haketilodb
#IMPORT html/dialog.js
+#FROM common/browser.js IMPORT browser
#FROM html/DOM_helpers.js IMPORT clone_template
-function populate_list(ul, items)
-{
+function populate_list(ul, items) {
for (const item of items) {
const li = document.createElement("li");
li.append(item);
@@ -55,41 +55,21 @@ function populate_list(ul, items)
}
}
-/* Link click handler used in make_file_link(). */
-async function file_link_clicked(preview_object, file_ref, event)
-{
- event.preventDefault();
-
- const db = await haketilodb.get();
- const file = await haketilodb.idb_get(db.transaction("files"),
- "files", file_ref.hash_key);
- if (file === undefined) {
- dialog.error(preview_object.dialog_context,
- "File missing from Haketilo's internal database :(");
- } else {
- const encoded_file = encodeURIComponent(file.contents);
- open(`data:text/plain;charset=utf8,${encoded_file}`, '_blank');
- }
-}
+const file_preview_link = browser.runtime.getURL("html/file_preview.html");
/*
* The default function to use to create file preview link. Links it creates can
* be used to view files from IndexedDB.
*/
-function make_file_link(preview_object, file_ref)
-{
+function make_file_link(preview_object, file_ref) {
const a = document.createElement("a");
- a.href = "javascript:void(0)";
+ a.href = `${file_preview_link}#${file_ref.hash_key}`;
a.innerText = file_ref.file;
- a.addEventListener("click",
- e => file_link_clicked(preview_object, file_ref, e));
-
+ a.target = "_blank";
return a;
}
-function resource_preview(resource, preview_object, dialog_context,
- make_link_cb=make_file_link)
-{
+function resource_preview(resource, preview_object, link_cb=make_file_link) {
if (preview_object === undefined)
preview_object = clone_template("resource_preview");
@@ -104,7 +84,7 @@ function resource_preview(resource, preview_object, dialog_context,
[...preview_object.dependencies.childNodes].forEach(n => n.remove());
populate_list(preview_object.dependencies, resource.dependencies);
- const link_maker = file_ref => make_link_cb(preview_object, file_ref);
+ const link_maker = file_ref => link_cb(preview_object, file_ref);
[...preview_object.scripts.childNodes].forEach(n => n.remove());
populate_list(preview_object.scripts, resource.scripts.map(link_maker));
@@ -113,15 +93,11 @@ function resource_preview(resource, preview_object, dialog_context,
populate_list(preview_object.copyright,
resource.source_copyright.map(link_maker));
- preview_object.dialog_context = dialog_context;
-
return preview_object;
}
#EXPORT resource_preview
-function mapping_preview(mapping, preview_object, dialog_context,
- make_link_cb=make_file_link)
-{
+function mapping_preview(mapping, preview_object, link_cb=make_file_link) {
if (preview_object === undefined)
preview_object = clone_template("mapping_preview");
@@ -145,14 +121,12 @@ function mapping_preview(mapping, preview_object, dialog_context,
}
}
- const link_maker = file_ref => make_link_cb(preview_object, file_ref);
+ const link_maker = file_ref => link_cb(preview_object, file_ref);
[...preview_object.copyright.childNodes].forEach(n => n.remove());
populate_list(preview_object.copyright,
mapping.source_copyright.map(link_maker));
- preview_object.dialog_context = dialog_context;
-
return preview_object;
}
#EXPORT mapping_preview