webextensions/src/scripts/popup.js

84 lines
2.4 KiB
JavaScript
Raw Normal View History

2018-04-08 22:33:36 +02:00
import ext from "./utils/ext";
import storage from "./utils/storage";
var page_data = {
2019-05-06 17:01:54 +02:00
title: "",
description: "",
image: "",
comment: "",
url: document.location.href
};
2018-04-08 22:33:36 +02:00
var popup = document.getElementById("app");
storage.get("extract", function(resp) {
var extract = resp.extract;
if (extract) {
document.getElementById("save-content").checked = extract
? "checked"
: false;
2018-04-08 22:33:36 +02:00
}
});
2019-05-06 17:01:54 +02:00
var renderMessage = message => {
document.getElementById("display-container").textContent = message;
};
2018-04-08 22:33:36 +02:00
2019-05-06 17:01:54 +02:00
var renderBookmark = data => {
2018-12-12 08:06:04 +01:00
if (data) {
2019-05-06 17:01:54 +02:00
page_data = data;
document.querySelector("[data-template=title]").textContent =
page_data.title;
document.querySelector("[data-template=description]").textContent =
page_data.description;
if ("" !== img) {
var img = document.createElement("image");
img.src = page_data.image;
document.querySelector("[data-template=image]").appendChild(img);
}
document.querySelector("[data-template=url]").textContent = page_data.url;
document
.querySelector("[data-template=url]")
.setAttribute("href", page_data.url);
2018-04-08 22:33:36 +02:00
} else {
2018-10-17 08:15:10 +02:00
renderMessage(ext.i18n.getMessage("cantExtractTitle"));
2018-04-08 22:33:36 +02:00
}
};
2018-04-08 22:33:36 +02:00
2019-05-06 17:01:54 +02:00
ext.tabs.query({ active: true, currentWindow: true }, function(tabs) {
2018-04-08 22:33:36 +02:00
var activeTab = tabs[0];
ext.tabs.sendMessage(
2019-05-06 17:01:54 +02:00
activeTab.id,
{ action: "process-page" },
renderBookmark
);
2018-04-08 22:33:36 +02:00
});
popup.addEventListener("click", function(e) {
2019-05-06 17:01:54 +02:00
if (e.target && e.target.matches("#save-btn")) {
e.preventDefault();
page_data.comment = document.getElementById("comment").value;
page_data.extract = document.getElementById("save-content").checked;
2019-05-06 17:01:54 +02:00
ext.runtime.sendMessage(
{ action: "perform-save", data: page_data },
function(response) {
if (response && response.action === "saved") {
renderMessage(ext.i18n.getMessage("savedSuccessfully"));
} else {
renderMessage(response.error + " (" + response.status + ")");
}
}
);
2018-04-08 22:33:36 +02:00
}
});
var dataMessages = document.querySelectorAll("[data-message]");
[].forEach.call(dataMessages, function(elt) {
2019-05-06 17:01:54 +02:00
elt.textContent = ext.i18n.getMessage(elt.dataset.message);
});
2018-04-08 22:33:36 +02:00
var optionsLink = document.querySelector(".js-options");
optionsLink.addEventListener("click", function(e) {
e.preventDefault();
2019-05-06 17:01:54 +02:00
ext.tabs.create({ url: ext.extension.getURL("options.html") });
});