-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoptions.js
More file actions
1 lines (1 loc) · 4.48 KB
/
options.js
File metadata and controls
1 lines (1 loc) · 4.48 KB
1
(()=>{"use strict";const e={exaKey:"",openaiKey:"",highlightsEnabled:!0,sidebarEnabled:!1,darkMode:!1,excludedDomains:[],maxVerificationsPerDay:10,enableCaching:!0,cacheDuration:7,useLLMExtraction:!0,usageCount:0,lastUsageReset:Date.now()};async function t(){return new Promise((t=>{chrome.storage.local.get(e,(e=>{t(e)}))}))}async function n(e){return new Promise((t=>{chrome.storage.local.set(e,(()=>{t()}))}))}function a(e,t,n){const a=document.getElementById(e);a&&(a.textContent=n,a.className="status "+(t?"success":"error"))}document.addEventListener("DOMContentLoaded",(()=>{!async function(){const e=await t();document.getElementById("exaKey").value=e.exaKey,document.getElementById("openaiKey").value=e.openaiKey,document.getElementById("highlightsEnabled").checked=e.highlightsEnabled,document.getElementById("sidebarEnabled").checked=e.sidebarEnabled,document.getElementById("darkMode").checked=e.darkMode,document.getElementById("excludedDomains").value=e.excludedDomains.join("\n"),document.getElementById("maxVerifications").value=e.maxVerificationsPerDay.toString(),document.getElementById("enableCaching").checked=e.enableCaching,document.getElementById("cacheDuration").value=e.cacheDuration.toString(),document.getElementById("useLLMExtraction").checked=e.useLLMExtraction;const n=document.getElementById("currentUsage");n&&(n.textContent=e.usageCount.toString());const a=document.getElementById("openaiKey"),d=document.getElementById("useLLMExtraction");a.value?(d.disabled=!1,d.parentElement?.parentElement?.removeAttribute("title")):(d.checked=!1,d.disabled=!0,d.parentElement?.parentElement?.setAttribute("title","OpenAI API key required"))}(),document.getElementById("testExaKey")?.addEventListener("click",(async()=>{const e=document.getElementById("exaKey").value,t=await async function(e){try{return(await fetch("https://api.exa.ai/search",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test query",numResults:1})})).ok}catch(e){return!1}}(e);a("exaKeyStatus",t,t?"✓ API key is valid":"✗ Invalid API key")})),document.getElementById("testOpenAIKey")?.addEventListener("click",(async()=>{const e=document.getElementById("openaiKey").value,t=await async function(e){try{return(await fetch("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${e}`}})).ok}catch(e){return!1}}(e);a("openaiKeyStatus",t,t?"✓ API key is valid":"✗ Invalid API key");const n=document.getElementById("useLLMExtraction");t?(n.disabled=!1,n.parentElement?.parentElement?.removeAttribute("title")):(n.checked=!1,n.disabled=!0,n.parentElement?.parentElement?.setAttribute("title","OpenAI API key required"))})),document.getElementById("openaiKey")?.addEventListener("input",(()=>{const e=document.getElementById("openaiKey").value,t=document.getElementById("useLLMExtraction");""===e.trim()?(t.checked=!1,t.disabled=!0,t.parentElement?.parentElement?.setAttribute("title","OpenAI API key required")):(t.disabled=!1,t.parentElement?.parentElement?.removeAttribute("title"))})),document.getElementById("resetUsage")?.addEventListener("click",(async()=>{await async function(){await n({usageCount:0,lastUsageReset:Date.now()})}();const e=document.getElementById("currentUsage");e&&(e.textContent="0"),a("saveStatus",!0,"Usage counter reset!"),setTimeout((()=>{const e=document.getElementById("saveStatus");e&&(e.textContent="")}),2e3)})),document.getElementById("saveSettings")?.addEventListener("click",(async()=>{await async function(){const e=document.getElementById("maxVerifications").value,a=document.getElementById("cacheDuration").value,d=await t(),c={exaKey:document.getElementById("exaKey").value,openaiKey:document.getElementById("openaiKey").value,highlightsEnabled:document.getElementById("highlightsEnabled").checked,sidebarEnabled:document.getElementById("sidebarEnabled").checked,darkMode:document.getElementById("darkMode").checked,excludedDomains:document.getElementById("excludedDomains").value.split("\n").map((e=>e.trim())).filter((e=>e)),maxVerificationsPerDay:parseInt(e||"10",10),enableCaching:document.getElementById("enableCaching").checked,cacheDuration:parseInt(a||"7",10),useLLMExtraction:document.getElementById("useLLMExtraction").checked,usageCount:d.usageCount,lastUsageReset:d.lastUsageReset};await n(c);const i=await chrome.tabs.query({});for(const e of i)e.id&&chrome.tabs.sendMessage(e.id,{type:"SETTINGS_UPDATED",settings:c})}(),a("saveStatus",!0,"Settings saved!"),setTimeout((()=>{const e=document.getElementById("saveStatus");e&&(e.textContent="")}),2e3)}))}))})();