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);