()
| 706 | ); |
| 707 | } |
| 708 | async function loadAndPopulateEngines() { |
| 709 | console.log("[loadAndPopulateEngines] Populating engines..."); |
| 710 | if (!UI.searchengineSelect) return; |
| 711 | let engineOptions = []; |
| 712 | try { |
| 713 | const data = await getStorageData([ |
| 714 | CONSTANTS.STORAGE_KEYS.USER_SELECTORS, |
| 715 | CONSTANTS.STORAGE_KEYS.DEFAULT_SELECTORS, |
| 716 | ]); |
| 717 | const userConfigs = data[CONSTANTS.STORAGE_KEYS.USER_SELECTORS] || {}; |
| 718 | const defaultConfigs = |
| 719 | data[CONSTANTS.STORAGE_KEYS.DEFAULT_SELECTORS] || {}; |
| 720 | const allConfigs = { ...defaultConfigs, ...userConfigs }; |
| 721 | const validEngines = []; |
| 722 | for (const key in allConfigs) { |
| 723 | if (Object.prototype.hasOwnProperty.call(allConfigs, key)) { |
| 724 | const config = allConfigs[key]; |
| 725 | if (config && config.useInEngineSelect === true && config.baseUrl) { |
| 726 | validEngines.push({ key: key, config: config }); |
| 727 | } |
| 728 | } |
| 729 | } |
| 730 | validEngines.sort(sortSearchEngines); |
| 731 | engineOptions = validEngines.map((engineData) => { |
| 732 | let displayName = engineData.key; |
| 733 | const domainParts = engineData.key.split("."); |
| 734 | if (domainParts.length >= 2) |
| 735 | displayName = domainParts[domainParts.length - 2]; |
| 736 | displayName = |
| 737 | displayName.charAt(0).toUpperCase() + displayName.slice(1); |
| 738 | const truncatedDisplayName = truncateText(displayName, 15); |
| 739 | return { |
| 740 | value: engineData.key, |
| 741 | text: truncatedDisplayName, |
| 742 | title: engineData.key, |
| 743 | }; |
| 744 | }); |
| 745 | UI.searchengineSelect.disabled = engineOptions.length === 0; |
| 746 | } catch (error) { |
| 747 | console.error("Error fetching search engines:", error); |
| 748 | UI.searchengineSelect.disabled = true; |
| 749 | } |
| 750 | populateDropdownWithOptions( |
| 751 | UI.searchengineSelect, |
| 752 | "Search Engine", |
| 753 | engineOptions |
| 754 | ); |
| 755 | if (engineOptions.length === 0) |
| 756 | console.warn("No search engines found eligible for dropdown."); |
| 757 | console.log("[loadAndPopulateEngines] Finished populating engines."); |
| 758 | } |
| 759 | function selectOptionByValue(selectElement, valueToSelect) { |
| 760 | if ( |
| 761 | !selectElement || |
no test coverage detected