MCPcopy Create free account
hub / github.com/SKVNDR/FastDork / loadAndDisplayUserSiteSelectors

Function loadAndDisplayUserSiteSelectors

Script/FastDork.js:2247–2329  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2245 }
2246 }
2247 async function loadAndDisplayUserSiteSelectors() {
2248 if (!UI.siteSettingsListContainer) {
2249 console.error("Site settings list container not found.");
2250 return;
2251 }
2252 setSiteSettingsListMessage("Loading...");
2253 try {
2254 const allConfigs = await loadSiteConfigs();
2255 const data = await getStorageData([
2256 CONSTANTS.STORAGE_KEYS.USER_SELECTORS,
2257 CONSTANTS.STORAGE_KEYS.DEFAULT_SELECTORS,
2258 ]);
2259 const userConfigs = data[CONSTANTS.STORAGE_KEYS.USER_SELECTORS] || {};
2260 const defaultConfigs =
2261 data[CONSTANTS.STORAGE_KEYS.DEFAULT_SELECTORS] || {};
2262 const allKeys = Object.keys(allConfigs);
2263 allKeys.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
2264 UI.siteSettingsListContainer.replaceChildren();
2265 if (allKeys.length === 0) {
2266 setSiteSettingsListMessage(
2267 'No default or custom configurations found. Click "Add New".'
2268 );
2269 return;
2270 }
2271 allKeys.forEach((domain) => {
2272 if (!allConfigs[domain]) return;
2273 const isUser = userConfigs.hasOwnProperty(domain);
2274 const isDefault = defaultConfigs.hasOwnProperty(domain);
2275 const config = allConfigs[domain];
2276 let statusText = "";
2277 if (isUser && !isDefault) statusText = " (Custom)";
2278 else if (isUser && isDefault) statusText = " (Overridden)";
2279 else if (!isUser && isDefault) statusText = " (Default)";
2280 const listItem = document.createElement("li");
2281 listItem.className = "site-config-item";
2282 const nameSpan = document.createElement("span");
2283 nameSpan.className = "site-config-name";
2284 if (isUser) nameSpan.classList.add("is-user-config");
2285 if (!isUser && isDefault) nameSpan.classList.add("is-default-config");
2286 const truncatedDisplayDomain = truncateText(domain, 18);
2287 nameSpan.textContent = `${truncatedDisplayDomain}${statusText}`;
2288 nameSpan.title = `Domain: ${domain}\nStatus: ${
2289 statusText.trim().replace(/[()]/g, "") || "Default"
2290 }\nType: ${
2291 config.useInEngineSelect ? "Search Engine" : "Importer/Other"
2292 }`;
2293 const buttonDiv = document.createElement("div");
2294 buttonDiv.className = "site-config-buttons";
2295 const editButton = document.createElement("button");
2296 editButton.textContent = "Edit";
2297 editButton.className = "xs";
2298 editButton.title = `Edit configuration for ${domain}`;
2299 editButton.addEventListener("click", (e) => {
2300 e.stopPropagation();
2301 const configPageUrl = chrome.runtime.getURL(
2302 `siteconfig.html?edit=${encodeURIComponent(domain)}`
2303 );
2304 chrome.tabs.create({ url: configPageUrl, active: true });

Callers 4

handleResetAllDataFunction · 0.85
handleDeleteSiteSelectorFunction · 0.85
setupEventListenersFunction · 0.85

Calls 6

loadSiteConfigsFunction · 0.85
truncateTextFunction · 0.85
handleDeleteSiteSelectorFunction · 0.85
showModalFunction · 0.85
getStorageDataFunction · 0.70

Tested by

no test coverage detected