1import { DEFAULT_RELAY_URL, normalizeRelayUrl } from "../shared/rendezvous";23const RELAY_URL_KEY = "peach_relay_url_v1";4const LAN_ONLY_KEY = "peach_sync_lan_only_v1";56export interface RelaySettings {7 relayUrl: string;8 lanOnly: boolean;9}1011export async function getRelaySettings(): Promise<RelaySettings> {12 try {13 const raw = await chrome.storage.local.get([RELAY_URL_KEY, LAN_ONLY_KEY]);14 const values = raw as Record<string, unknown>;15 const relayUrl =16 typeof values[RELAY_URL_KEY] === "string"17 ? safeNormalize(values[RELAY_URL_KEY] as string)18 : DEFAULT_RELAY_URL;19 return {20 relayUrl,21 lanOnly: values[LAN_ONLY_KEY] === true,22 };23 } catch {24 return { relayUrl: DEFAULT_RELAY_URL, lanOnly: false };25 }26}2728export async function setRelayUrl(input: string): Promise<string> {29 const relayUrl = normalizeRelayUrl(input);30 await chrome.storage.local.set({ [RELAY_URL_KEY]: relayUrl });31 return relayUrl;32}3334export async function setLanOnly(lanOnly: boolean): Promise<void> {35 await chrome.storage.local.set({ [LAN_ONLY_KEY]: lanOnly });36}3738function safeNormalize(input: string): string {39 try {40 return normalizeRelayUrl(input);41 } catch {42 return DEFAULT_RELAY_URL;43 }44}