bitwarden-estensione-browser/src/notification/bar.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

162 lines
5.3 KiB
JavaScript
Raw Normal View History

2022-02-24 18:14:04 +01:00
// eslint-disable-next-line
2019-10-09 16:12:06 +02:00
require("./bar.scss");
2021-10-06 19:40:40 +02:00
document.addEventListener("DOMContentLoaded", () => {
2022-02-24 18:14:04 +01:00
let i18n = {};
let lang = window.navigator.language;
i18n.appName = chrome.i18n.getMessage("appName");
i18n.close = chrome.i18n.getMessage("close");
i18n.never = chrome.i18n.getMessage("never");
2021-09-19 00:11:10 +02:00
i18n.folder = chrome.i18n.getMessage("folder");
i18n.notificationAddSave = chrome.i18n.getMessage("notificationAddSave");
i18n.notificationAddDesc = chrome.i18n.getMessage("notificationAddDesc");
i18n.notificationChangeSave = chrome.i18n.getMessage("notificationChangeSave");
i18n.notificationChangeDesc = chrome.i18n.getMessage("notificationChangeDesc");
2022-02-24 18:14:04 +01:00
lang = chrome.i18n.getUILanguage(); // eslint-disable-line
// delay 50ms so that we get proper body dimensions
setTimeout(load, 50);
function load() {
const isVaultLocked = getQueryVariable("isVaultLocked") == "true";
document.getElementById("logo").src = isVaultLocked
? chrome.runtime.getURL("images/icon38_locked.png")
: chrome.runtime.getURL("images/icon38.png");
document.getElementById("logo-link").title = i18n.appName;
var neverButton = document.querySelector("#template-add .never-save");
neverButton.textContent = i18n.never;
var selectFolder = document.querySelector("#template-add .select-folder");
selectFolder.setAttribute("aria-label", i18n.folder);
selectFolder.setAttribute("isVaultLocked", isVaultLocked.toString());
var addButton = document.querySelector("#template-add .add-save");
addButton.textContent = i18n.notificationAddSave;
2021-12-21 15:43:35 +01:00
var changeButton = document.querySelector("#template-change .change-save");
changeButton.textContent = i18n.notificationChangeSave;
2021-12-21 15:43:35 +01:00
var closeIcon = document.getElementById("close");
closeIcon.src = chrome.runtime.getURL("images/close.png");
closeIcon.alt = i18n.close;
2021-12-21 15:43:35 +01:00
var closeButton = document.getElementById("close-button");
closeButton.title = i18n.close;
2019-10-09 16:12:06 +02:00
closeButton.setAttribute("aria-label", i18n.close);
2021-12-21 15:43:35 +01:00
document.querySelector("#template-add .add-text").textContent = i18n.notificationAddDesc;
document.querySelector("#template-change .change-text").textContent =
i18n.notificationChangeDesc;
2021-12-21 15:43:35 +01:00
2017-11-10 04:38:09 +01:00
if (getQueryVariable("add")) {
setContent(document.getElementById("template-add"));
2021-12-21 15:43:35 +01:00
2022-02-24 18:14:04 +01:00
var addButton = document.querySelector("#template-add-clone .add-save"), // eslint-disable-line
neverButton = document.querySelector("#template-add-clone .never-save"); // eslint-disable-line
2021-10-06 19:40:40 +02:00
addButton.addEventListener("click", (e) => {
e.preventDefault();
2021-12-21 15:43:35 +01:00
2021-10-06 19:40:40 +02:00
const folderId = document.querySelector("#template-add-clone .select-folder").value;
2021-12-21 15:43:35 +01:00
const bgAddSaveMessage = {
command: "bgAddSave",
folder: folderId,
2021-12-21 15:43:35 +01:00
};
sendPlatformMessage(bgAddSaveMessage);
2021-12-21 15:43:35 +01:00
});
2018-04-14 04:54:28 +02:00
neverButton.addEventListener("click", (e) => {
2017-11-10 04:38:09 +01:00
e.preventDefault();
sendPlatformMessage({
2017-11-10 04:38:09 +01:00
command: "bgNeverSave",
2021-12-21 15:43:35 +01:00
});
});
if (!isVaultLocked) {
2021-10-06 19:40:40 +02:00
const responseFoldersCommand = "notificationBarGetFoldersList";
chrome.runtime.onMessage.addListener((msg) => {
if (msg.command === responseFoldersCommand && msg.data) {
2021-10-06 19:40:40 +02:00
fillSelectorWithFolders(msg.data.folders);
2021-12-21 15:43:35 +01:00
}
});
2021-10-06 19:40:40 +02:00
sendPlatformMessage({
command: "bgGetDataForTab",
responseCommand: responseFoldersCommand,
});
2021-12-21 15:43:35 +01:00
}
2018-08-01 05:24:11 +02:00
} else if (getQueryVariable("change")) {
setContent(document.getElementById("template-change"));
2022-02-24 18:14:04 +01:00
var changeButton = document.querySelector("#template-change-clone .change-save"); // eslint-disable-line
2018-08-01 05:24:11 +02:00
changeButton.addEventListener("click", (e) => {
e.preventDefault();
2021-12-21 15:43:35 +01:00
const bgChangeSaveMessage = {
2018-08-01 05:24:11 +02:00
command: "bgChangeSave",
2021-12-21 15:43:35 +01:00
};
sendPlatformMessage(bgChangeSaveMessage);
2021-12-21 15:43:35 +01:00
});
2021-10-06 19:40:40 +02:00
}
2021-12-21 15:43:35 +01:00
2018-04-14 04:54:28 +02:00
closeButton.addEventListener("click", (e) => {
e.preventDefault();
sendPlatformMessage({
2017-11-10 04:38:09 +01:00
command: "bgCloseNotificationBar",
2021-12-21 15:43:35 +01:00
});
});
2018-04-14 04:54:28 +02:00
window.addEventListener("resize", adjustHeight);
2021-10-06 19:40:40 +02:00
adjustHeight();
2021-12-21 15:43:35 +01:00
}
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
2021-12-21 15:43:35 +01:00
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] === variable) {
return pair[1];
2021-12-21 15:43:35 +01:00
}
}
return null;
}
function setContent(element) {
2018-08-01 05:24:11 +02:00
const content = document.getElementById("content");
while (content.firstChild) {
content.removeChild(content.firstChild);
2021-12-21 15:43:35 +01:00
}
var newElement = element.cloneNode(true);
newElement.id = newElement.id + "-clone";
content.appendChild(newElement);
2021-12-21 15:43:35 +01:00
}
function sendPlatformMessage(msg) {
chrome.runtime.sendMessage(msg);
2021-12-21 15:43:35 +01:00
}
function fillSelectorWithFolders(folders) {
const select = document.querySelector("#template-add-clone .select-folder");
select.appendChild(new Option(chrome.i18n.getMessage("selectFolder"), null, true));
folders.forEach((folder) => {
//Select "No Folder" (id=null) folder by default
select.appendChild(new Option(folder.name, folder.id || "", false));
2021-12-21 15:43:35 +01:00
});
}
2021-10-06 19:40:40 +02:00
function adjustHeight() {
sendPlatformMessage({
2017-11-10 04:38:09 +01:00
command: "bgAdjustNotificationBar",
2021-12-21 15:43:35 +01:00
data: {
2021-10-06 19:40:40 +02:00
height: document.querySelector("body").scrollHeight,
2021-12-21 15:43:35 +01:00
},
});
}
});