class MessagingService {

  async GetNodes(sender, callback) {
    const a = this;
    const nodes = await document.body.getElementsByTagName("a");
    let result = [];

    for (let i=0; i<nodes.length; i++) {
      result.push({
        innerText: nodes[i].innerText ?? "",
        innerHTML: nodes[i].innerHTML ?? "",
        href: (nodes[i].getAttribute("href") ?? "").trim(),
        title: (nodes[i].getAttribute("title") ?? "").trim(),
        target: nodes[i].getAttribute("target") ?? "",
        rel: nodes[i].getAttribute("rel") ?? "",
        type: nodes[i].getAttribute("type") ?? "",
        occurrence: 1
      });
    }

    // for (let i=0; i<result.length; i++) {
    //   result[i].occurrence = result.filter(item => JSON.stringify(item) === JSON.stringify(result[i])).length;
    // }

    await callback(result);
  }

  async GetLocation(sender, callback) {
    callback(document.location.href);
  }

}


const messageService = new MessagingService();


chrome.runtime.onMessage.addListener(async function(request, sender, callback) {

  if (typeof(messageService[request.event]) == "undefined") {
    return;
  }

  await messageService[request.event](sender, callback);

});




// var optHideWatchedVideos = new Promise(function(resolve) {
//   chrome.storage.local.get(['switch1'], function(result) {
//     resolve(result.switch1);
//   });
// });
