tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

aboutLoginsImportReport.mjs (2756B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 import ImportDetailsRow from "./components/import-details-row.mjs";
      6 
      7 const detailsLoginsList = document.querySelector(".logins-list");
      8 const detailedNewCount = document.querySelector(".new-logins");
      9 const detailedExitingCount = document.querySelector(".exiting-logins");
     10 const detailedDuplicateCount = document.querySelector(".duplicate-logins");
     11 const detailedErrorsCount = document.querySelector(".errors-logins");
     12 
     13 document.dispatchEvent(
     14  new CustomEvent("AboutLoginsImportReportInit", { bubbles: true })
     15 );
     16 
     17 function importReportDataHandler(event) {
     18  switch (event.detail.messageType) {
     19    case "ImportReportData": {
     20      const logins = event.detail.value;
     21      const report = {
     22        added: 0,
     23        modified: 0,
     24        no_change: 0,
     25        error: 0,
     26      };
     27      for (let loginRow of logins) {
     28        if (loginRow.result.includes("error")) {
     29          report.error++;
     30        } else {
     31          report[loginRow.result]++;
     32        }
     33      }
     34      document.l10n.setAttributes(
     35        detailedNewCount,
     36        "about-logins-import-report-added2",
     37        { count: report.added }
     38      );
     39      document.l10n.setAttributes(
     40        detailedExitingCount,
     41        "about-logins-import-report-modified2",
     42        { count: report.modified }
     43      );
     44      document.l10n.setAttributes(
     45        detailedDuplicateCount,
     46        "about-logins-import-report-no-change2",
     47        { count: report.no_change }
     48      );
     49      document.l10n.setAttributes(
     50        detailedErrorsCount,
     51        "about-logins-import-report-error",
     52        { count: report.error }
     53      );
     54      if (report.no_change > 0) {
     55        detailedDuplicateCount
     56          .querySelector(".not-imported")
     57          .classList.toggle("not-imported-hidden");
     58      }
     59      if (report.error > 0) {
     60        detailedErrorsCount
     61          .querySelector(".not-imported")
     62          .classList.toggle("not-imported-hidden");
     63      }
     64 
     65      detailsLoginsList.innerHTML = "";
     66      let fragment = document.createDocumentFragment();
     67      for (let index = 0; index < logins.length; index++) {
     68        const row = new ImportDetailsRow(index + 1, logins[index]);
     69        fragment.appendChild(row);
     70      }
     71      detailsLoginsList.appendChild(fragment);
     72      window.removeEventListener(
     73        "AboutLoginsChromeToContent",
     74        importReportDataHandler
     75      );
     76      document.dispatchEvent(
     77        new CustomEvent("AboutLoginsImportReportReady", { bubbles: true })
     78      );
     79      break;
     80    }
     81  }
     82 }
     83 
     84 window.addEventListener("AboutLoginsChromeToContent", importReportDataHandler);