Implement search engine setting, add new setting

This commit is contained in:
wearrrrr 2024-01-18 14:19:24 -06:00
parent 8b20308a83
commit 611dc01b57
3 changed files with 41 additions and 38 deletions

View file

@ -9,7 +9,7 @@ interface Props {
--- ---
<div class="input-container"> <div class="input-container">
<input id={inputName + "-input"} type={type as any} /> <input id={inputName + "-input"} value={defaultTextContent || ""} type={type as any} />
</div> </div>
<style> <style>

View file

@ -21,9 +21,13 @@ import Input from "./Input.astro";
</div> </div>
<div class="setting__bare-url"> <div class="setting__bare-url">
<p class="setting-label">Bare URL</p> <p class="setting-label">Bare URL</p>
<Input inputName="bare-url" defaultTextContent="/bare/" /> <Input inputName="bare-url" />
</div> </div>
</div> </div>
<div class="setting__searxng-url">
<div class="setting-label">Searxng URL</div>
<Input inputName="searxng-url" defaultTextContent="https://searxng.site/" />
</div>
</div> </div>
<div id="content-setting-tab-customization"> <div id="content-setting-tab-customization">
<h1 style="color: white;">Customization</h1> <h1 style="color: white;">Customization</h1>
@ -140,12 +144,16 @@ import Input from "./Input.astro";
} }
} }
function applyDropdownEventListeners(item, dropdownID, localStorageItem) { function applyDropdownEventListeners(item, dropdownID, localStorageItem, optionalCallback) {
Array.from(item.children).forEach((item) => { Array.from(item.children).forEach((item) => {
item.addEventListener('click', () => { item.addEventListener('click', () => {
localStorage.setItem(localStorageItem, item.dataset.setting) localStorage.setItem(localStorageItem, item.dataset.setting)
applySavedLocalStorage(localStorageItem, dropdownID) applySavedLocalStorage(localStorageItem, dropdownID)
closeDropdown(item.parentElement.id); closeDropdown(item.parentElement.id);
if (typeof optionalCallback == "function") {
optionalCallback();
}
}) })
}) })
} }
@ -157,7 +165,7 @@ import Input from "./Input.astro";
function setupSettings(event) { function setupSettings(event) {
if (event.detail == "setting-tab-proxy") { if (event.detail == "setting-tab-proxy") {
applySavedLocalStorage('selectedProxy', 'dropdown__selected-proxy'); applySavedLocalStorage('selectedProxy', 'dropdown__selected-proxy');
applySavedLocalStorage('selectedSearchEngine', 'dropdown__search-engine'); applySavedLocalStorage('alu__search_engine', 'dropdown__search-engine');
applySavedLocalStorage("selectedOpenWith", 'dropdown__open-with'); applySavedLocalStorage("selectedOpenWith", 'dropdown__open-with');
let selectedProxyDropdown = document.getElementById('dropdown__selected-proxy-menu') let selectedProxyDropdown = document.getElementById('dropdown__selected-proxy-menu')
let searchEngineDropdown = document.getElementById('dropdown__search-engine-menu') let searchEngineDropdown = document.getElementById('dropdown__search-engine-menu')
@ -166,7 +174,7 @@ import Input from "./Input.astro";
bareUrlInput.addEventListener('change', () => { bareUrlInput.addEventListener('change', () => {
localStorage.setItem('bareUrl', bareUrlInput.value) localStorage.setItem('bareUrl', bareUrlInput.value)
}) })
applyDropdownEventListeners(searchEngineDropdown, 'dropdown__search-engine', 'selectedSearchEngine'); applyDropdownEventListeners(searchEngineDropdown, 'dropdown__search-engine', 'alu__search_engine', checkSearxng);
applyDropdownEventListeners(selectedProxyDropdown, 'dropdown__selected-proxy', 'selectedProxy'); applyDropdownEventListeners(selectedProxyDropdown, 'dropdown__selected-proxy', 'selectedProxy');
applyDropdownEventListeners(openWithDropdown, 'dropdown__open-with', 'selectedOpenWith'); applyDropdownEventListeners(openWithDropdown, 'dropdown__open-with', 'selectedOpenWith');
if (localStorage.getItem('bareUrl')) { if (localStorage.getItem('bareUrl')) {
@ -178,6 +186,13 @@ import Input from "./Input.astro";
} }
} }
function checkSearxng() {
// This function checks if the "searxng" option was clicked, display an additional option if so.
if (localStorage.getItem("alu__search_engine")) {
}
}
document.addEventListener('setting-tabLoad', setupSettings) document.addEventListener('setting-tabLoad', setupSettings)
</script> </script>
<style> <style>

View file

@ -12,7 +12,7 @@
let loadingContent = document.getElementById('loading-content'); let loadingContent = document.getElementById('loading-content');
loadingContent.style.opacity = 1; loadingContent.style.opacity = 1;
let url = input.value.trim(); let url = input.value.trim();
if (!isUrl(url)) url = 'https://www.google.com/search?q=' + url; if (!isUrl(url)) url = getSearchEngine() + url;
else if (!(url.startsWith('https://') || url.startsWith('http://'))) url = 'http://' + url; else if (!(url.startsWith('https://') || url.startsWith('http://'))) url = 'http://' + url;
let iframe = document.getElementById('proxy-frame'); let iframe = document.getElementById('proxy-frame');
@ -45,41 +45,29 @@
document.body.appendChild(topBar); document.body.appendChild(topBar);
}) })
}); });
// function checkReadyState(iframe) {
// // Recursive function that checks if the iframe is ready to be used.
// console.log(iframe.contentWindow.document.readyState)
// if (iframe.contentWindow.document.readyState === "complete") {
// // The iframe is ready to be used.
// // We can now add the top bar.
// let topBar = document.createElement('div');
// topBar.classList.add("top-bar");
// let backButton = document.createElement('button');
// backButton.classList.add("back-button");
// backButton.innerHTML = "Back";
// backButton.addEventListener('click', (event) => {
// iframe.remove();
// topBar.remove();
// });
// let urlText = document.createElement('p');
// urlText.classList.add("url-text");
// urlText.innerHTML = iframe.src;
// topBar.appendChild(backButton);
// topBar.appendChild(urlText);
// document.body.appendChild(topBar);
// } else {
// // The iframe is not ready yet.
// // We will wait 100ms and then check again.
// setTimeout(() => {
// console.log("Not ready...")
// checkReadyState(iframe);
// }, 100);
// }
// }
function isUrl(val = ''){ function isUrl(val = ''){
if (/^http(s?):\/\//.test(val) || val.includes('.') && val.substr(0, 1) !== ' ') return true; if (/^http(s?):\/\//.test(val) || val.includes('.') && val.substr(0, 1) !== ' ') return true;
return false; return false;
}; };
function getSearchEngine() {
switch (localStorage.getItem("alu__search_engine").toLowerCase()) {
case "google": {
return "https://google.com/search?q=";
}
case "bing": {
return "https://bing.com/search?q=d";
}
case "brave": {
return "https://search.brave.com/search?q=";
}
case "searx": {
return "https://searxng.site/search?q=";
}
default: {
return "https://google.com/search?q="
}
}
}
</script> </script>