Files
2026-04-27 16:13:15 +02:00

143 lines
4.5 KiB
JavaScript

// Copyright 2017; Licensed under the Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0
'use strict';
if (typeof globalThis.browser === "undefined" && typeof chrome !== "undefined") {
globalThis.browser = {
...chrome,
runtime: {
...chrome.runtime,
sendMessage: function(message) {
return new Promise((resolve, reject) => {
chrome.runtime.sendMessage(message, response => {
const err = chrome.runtime.lastError;
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
},
getURL: chrome.runtime.getURL.bind(chrome.runtime),
onMessage: chrome.runtime.onMessage
},
storage: {
...chrome.storage,
local: {
...chrome.storage.local,
get: function(keys) {
return new Promise((resolve, reject) => {
chrome.storage.local.get(keys, result => {
const err = chrome.runtime.lastError;
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
},
set: function(items) {
return new Promise((resolve, reject) => {
chrome.storage.local.set(items, () => {
const err = chrome.runtime.lastError;
if (err) {
reject(err);
} else {
resolve();
}
});
});
},
remove: function(keys) {
return new Promise((resolve, reject) => {
chrome.storage.local.remove(keys, () => {
const err = chrome.runtime.lastError;
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
},
onChanged: chrome.storage.onChanged
},
extension: {
...chrome.extension,
getURL: chrome.runtime.getURL.bind(chrome.runtime)
}
};
}
function reset()
{
browser.storage.local.set({cards:[]});
document.body.querySelector("#field").textContent = "";
document.body.querySelector("#reset").value = "Reset";
document.body.querySelector("#reset").addEventListener("click", ask_reset);
}
function ask_reset()
{
document.body.querySelector("#reset").value = "Click again to make Nazeka to forget ALL your mined words.";
document.body.querySelector("#reset").addEventListener("click", reset);
}
async function init_page()
{
let data = (await browser.storage.local.get("cards")).cards;
if(data)
{
let fulltext = "";
for(let card of data)
{
let text = "";
text += card.front.replace(/\t/g, "\\t");
text += "\t";
text += card.readings.replace(/\t/g, "\\t");
text += "\t";
text += card.definitions.trim().replace(/\t/g, "\\t");
text += "\t";
try
{ text += card.lookup.replace(/\t/g, "\\t");
text += "\t";
} catch(e) {}
try
{ text += card.sentence.replace(/\t/g, "\\t");
text += "\t";
} catch(e) {}
try
{ text += card.index.replace(/\t/g, "\\t");
text += "\t";
} catch(e) {}
text += card.seq.replace(/\t/g, "\\t");
text = text.replace(/\n/g, "\\n").replace(/\r/g, "");
text += "\n";
fulltext += text;
}
let element = document.body.querySelector("#field");
element.textContent = fulltext;
}
document.body.querySelector("#reset").addEventListener("click", ask_reset);
}
if (document.readyState == "complete")
init_page();
else
document.addEventListener("DOMContentLoaded", init_page);