MCPcopy
hub / github.com/zen-browser/desktop / _buildModsList

Function _buildModsList

src/browser/components/preferences/zen-settings.js:274–642  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

272 },
273
274 async _buildModsList() {
275 if (!this.modsList) {
276 return;
277 }
278
279 if (this._doNotRebuildModsList) {
280 this._doNotRebuildModsList = false;
281 return;
282 }
283
284 const mods = await gZenMods.getMods();
285 const browser = nsZenMultiWindowFeature.currentBrowser;
286 const modList = document.createElement("div");
287
288 for (const mod of Object.values(mods).sort((a, b) => a.name.localeCompare(b.name))) {
289 const sanitizedName = gZenMods.sanitizeModName(mod.name);
290 const isModEnabled = mod.enabled === undefined || mod.enabled;
291 const fragment = window.MozXULElement.parseXULToFragment(`
292 <vbox class="zenThemeMarketplaceItem">
293 <vbox class="zenThemeMarketplaceItemContent">
294 <hbox flex="1" id="zenThemeMarketplaceItemContentHeader">
295 <label><h3 class="zenThemeMarketplaceItemTitle"></h3></label>
296 </hbox>
297 <description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
298 </vbox>
299 <hbox class="zenThemeMarketplaceItemActions">
300 ${mod.preferences ? `<button id="zenThemeMarketplaceItemConfigureButton-${sanitizedName}" class="zenThemeMarketplaceItemConfigureButton" hidden="true"></button>` : ""}
301 ${mod.homepage ? `<button id="zenThemeMarketplaceItemHomePageLink-${sanitizedName}" class="zenThemeMarketplaceItemHomepageButton" zen-mod-id="${mod.id}"></button>` : ""}
302 <button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-mod-id="${mod.id}"></button>
303 </hbox>
304 </vbox>
305 `);
306
307 const modName = `${mod.name} (v${mod.version ?? "1.0.0"})`;
308
309 const base = fragment.querySelector(".zenThemeMarketplaceItem");
310 const baseHeader = fragment.querySelector("#zenThemeMarketplaceItemContentHeader");
311
312 const dialog = document.createElement("dialog");
313 const mainDialogDiv = document.createElement("div");
314 const headerDiv = document.createElement("div");
315 const headerTitle = document.createElement("h3");
316 const closeButton = document.createElement("button");
317 const contentDiv = document.createElement("div");
318 const mozToggle = document.createElement("moz-toggle");
319
320 mainDialogDiv.className = "zenThemeMarketplaceItemPreferenceDialog";
321 headerDiv.className = "zenThemeMarketplaceItemPreferenceDialogTopBar";
322 headerTitle.textContent = modName;
323 browser.document.l10n.setAttributes(headerTitle, "zen-theme-marketplace-theme-header-title", {
324 name: sanitizedName,
325 });
326 headerTitle.className = "zenThemeMarketplaceItemTitle";
327 closeButton.id = `${sanitizedName}-modal-close`;
328 browser.document.l10n.setAttributes(closeButton, "zen-theme-marketplace-close-modal");
329 contentDiv.id = `${sanitizedName}-preferences-content`;
330 contentDiv.className = "zenThemeMarketplaceItemPreferenceDialogContent";
331 mozToggle.className = "zenThemeMarketplaceItemPreferenceToggle";

Callers

nothing calls this directly

Calls 15

getModsMethod · 0.80
createElementMethod · 0.80
sortMethod · 0.80
sanitizeModNameMethod · 0.80
querySelectorMethod · 0.80
appendChildMethod · 0.80
getAttributeMethod · 0.80
closestMethod · 0.80
hasAttributeMethod · 0.80
disableModMethod · 0.80
enableModMethod · 0.80
formatValuesMethod · 0.80

Tested by

no test coverage detected