import { createSignal, onMount } from "solid-js"; import orLogo from "@/assets/orSpot.svg"; import arrowLeft from "@/assets/arrow-left.svg"; function Settings({ goBack }: { goBack: () => void }) { // State signals for various settings const [includeDevTools, setIncludeDevTools] = createSignal(true); const [openInNewTab, setOpenInNewTab] = createSignal(true); const [showIngest, setShowIngest] = createSignal(true); const [ingest, setIngest] = createSignal("https://app.openreplay.com"); const [editIngest, setEditIngest] = createSignal(false); const [tempIngest, setTempIngest] = createSignal(""); // Fetch settings from Chrome local storage when the component mounts onMount(() => { chrome.storage.local.get("settings", (data: any) => { if (data.settings) { const devToolsEnabled = data.settings.consoleLogs && data.settings.networkLogs; setOpenInNewTab(data.settings.openInNewTab ?? false); setIncludeDevTools(devToolsEnabled); setShowIngest(data.settings.showIngest ?? true); setIngest(data.settings.ingestPoint || "https://app.openreplay.com"); setTempIngest( data.settings.ingestPoint || "https://app.openreplay.com", ); setEditIngest(!data.settings.ingestPoint); // Enter edit mode if no ingest point is configured } }); }); // Toggle for including DevTools (both Console Logs and Network Calls) const toggleIncludeDevTools = (e: Event) => { e.preventDefault(); e.stopPropagation(); const value = includeDevTools(); setIncludeDevTools(!value); chrome.runtime.sendMessage({ type: "ort:settings", settings: { consoleLogs: !value, networkLogs: !value }, }); }; // Toggle for showing/hiding Ingest Point const toggleShowIngest = (e: Event) => { e.preventDefault(); e.stopPropagation(); const value = showIngest(); setShowIngest(!value); chrome.runtime.sendMessage({ type: "ort:settings", settings: { showIngest: !value }, }); }; // Apply changes to the ingest point const applyIngest = () => { const val = tempIngest(); if (isValidUrl(val)) { chrome.runtime.sendMessage({ type: "ort:settings", settings: { ingestPoint: val }, }); setIngest(val); setEditIngest(false); } else { alert("Please enter a valid URL."); } }; const toggleEditIngest = (isEditing: boolean) => { setTempIngest(ingest()); setEditIngest(isEditing); }; const isValidUrl = (url: string) => { try { new URL(url); return true; } catch (e) { return false; } }; const toggleOpenInNewTab = (e: Event) => { e.stopPropagation(); const value = openInNewTab(); setOpenInNewTab(!value); chrome.runtime.sendMessage({ type: "ort:settings", settings: { openInNewTab: !value }, }); }; return (
View Recording
Go to Spot tab after saving a recording.
Include DevTools
Include console logs, network calls and other debugging information in recordings for developers.
Ingest Point
The URL for sending website activity data, saving videos, sending events, and opening the login screen.
{showIngest() && (