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 (
{"Openreplay Settings
{/* Keeps Settings title section in the middle of the window. */}

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() && (
{editIngest() ? (
setTempIngest(e.currentTarget.value)} autofocus />
) : (
{ingest()}
)}
)}
); } export default Settings;