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(""); onMount(() => { chrome.storage.local.get("settings", (data: any) => { if (data.settings) { console.log('update state', 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); } }); }); 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 }, }); }; 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.

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;