'use client'; import { useStatus } from '@/context/status'; import { PageWrapper } from '../shared/page-wrapper'; import { useState, useEffect } from 'react'; import * as constants from '../../../../core/src/utils/constants'; import { useUserData } from '@/context/userData'; import { Switch } from '../ui/switch'; import { Select } from '../ui/select'; import { Combobox } from '../ui/combobox'; import { SettingsCard } from '../shared/settings-card'; import { TextInput } from '../ui/text-input'; import { toast } from 'sonner'; import { Button } from '../ui/button'; import MarkdownLite from '../shared/markdown-lite'; import { PageControls } from '../shared/page-controls'; import { PasswordInput } from '../ui/password-input'; type ProxyServiceId = keyof typeof constants.PROXY_SERVICE_DETAILS; type ProxyConfig = { enabled: boolean; id: ProxyServiceId; url: string; credentials: string; publicIp?: string; proxiedAddons?: string[]; proxiedServices?: string[]; }; export function ProxyMenu() { return ( <> ); } function Content() { const { status } = useStatus(); const { userData, setUserData } = useUserData(); const details = constants.PROXY_SERVICE_DETAILS; // Effect to initialize values from userData/defaults/forced // Generate options for proxy service select const proxyOptions = Object.entries(details).map(([id, detail]) => ({ label: detail.name, value: id, })); // Generate options for services multi-select const serviceOptions = [ ...Object.values(constants.SERVICE_DETAILS).map((service) => ({ label: service.name, value: service.id, textValue: service.name, })), { label: 'None', value: 'none', textValue: 'None', }, ]; const addonOptions = userData.presets.map((preset) => { return { label: preset.options.name || preset.type, value: preset.instanceId, textValue: preset.options.name, }; }); // lues are forced const isForced = status?.settings.forced.proxy; const isProxyForced = isForced?.enabled !== null; const isUrlForced = isForced?.url !== null; const isIdForced = isForced?.id !== null; const isPublicIpForced = isForced?.publicIp !== null; const isCredentialsForced = isForced?.credentials !== null; const isServicesForced = isForced?.proxiedServices !== null; const isProxiedAddonsDisabled = isForced?.disableProxiedAddons; const selectedProxyDetails = userData.proxy?.id ? details[userData.proxy.id] : undefined; return ( <>

Proxy

Configure a proxy for your streams to bypass IP restrictions or improve compatibility

{ setUserData((prev) => ({ ...prev, proxy: { ...prev.proxy, enabled: v }, })); }} disabled={isProxyForced} />