143 lines
4.5 KiB
JavaScript
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);
|
|
|