import { createSignal, onMount } from "solid-js"; import orLogo from "~/assets/orSpot.svg"; import arrowLeft from "~/assets/arrow-left.svg"; const defaultIngest = "https://app.openreplay.com"; function Settings({ goBack }: { goBack: () => void }) { const [includeDevTools, setIncludeDevTools] = createSignal(true); const [openInNewTab, setOpenInNewTab] = createSignal(true); const [showIngest, setShowIngest] = createSignal(false); const [ingest, setIngest] = createSignal(defaultIngest); const [editIngest, setEditIngest] = createSignal(false); const [tempIngest, setTempIngest] = createSignal(""); const [useDebugger, setUseDebugger] = createSignal(false); onMount(() => { chrome.storage.local.get("settings", (data: any) => { if (data.settings) { const ingest = data.settings.ingestPoint || defaultIngest; const devToolsEnabled = data.settings.consoleLogs && data.settings.networkLogs; setOpenInNewTab(data.settings.openInNewTab ?? false); setIncludeDevTools(devToolsEnabled); setIngest(ingest); setTempIngest(ingest); setShowIngest(ingest !== defaultIngest); setEditIngest(!data.settings.ingestPoint); setUseDebugger(data.settings.useDebugger); } }); }); const toggleIncludeDevTools = (e: Event) => { e.preventDefault(); e.stopPropagation(); const value = includeDevTools(); setIncludeDevTools(!value); chrome.runtime.sendMessage({ type: "ort:settings", settings: { consoleLogs: !value, networkLogs: !value }, }); }; const toggleShowIngest = (e: any) => { e.preventDefault(); e.stopPropagation(); const value = e.target.checked const newSettings = { showIngest: value } if (!value) { newSettings['ingestPoint'] = defaultIngest } chrome.runtime.sendMessage({ type: "ort:settings", settings: newSettings, }); setShowIngest(value); }; 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 }, }); }; const toggleUseDebugger = (e: Event) => { e.stopPropagation(); const value = useDebugger(); setUseDebugger(!value); chrome.runtime.sendMessage({ type: "ort:settings", settings: { useDebugger: !value }, }); } return (
{"Openreplay Settings
{/* Keeps Settings title section in the middle of the window. */}

View Recording

Take me to newly created Spot tab after saving a recording.

Include DevTools

Include console logs, network calls and other useful debugging information for developers.

Use Debugger

Enable the chrome debugger to track network requests with more precision.

Ingest Point

Set this URL if you are self-hosting OpenReplay so it points to your instance.

{showIngest() && (
{editIngest() ? (
setTempIngest(e.currentTarget.value)} autofocus />
) : (
{ingest()}
)}
)}
); } export default Settings;