import { useEffect, useState } from 'react'; import { Button } from './ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from './ui/dialog'; import { Label } from './ui/label'; const PATH_HASH_MODE_LABELS: Record = { 0: '1-byte', 1: '2-byte', 2: '3-byte', }; interface ChannelPathHashModeOverrideModalProps { open: boolean; onClose: () => void; channelName: string; currentOverride: number | null; radioDefault: number; onSetOverride: (value: number | null) => void; } export function ChannelPathHashModeOverrideModal({ open, onClose, channelName, currentOverride, radioDefault, onSetOverride, }: ChannelPathHashModeOverrideModalProps) { const [selected, setSelected] = useState(null); useEffect(() => { if (open) { setSelected(currentOverride); } }, [currentOverride, open]); const radioDefaultLabel = PATH_HASH_MODE_LABELS[radioDefault] ?? `${radioDefault}`; const options: { value: number | null; label: string; description: string }[] = [ { value: null, label: `Radio default (${radioDefaultLabel})`, description: 'Use the radio-wide path hash mode setting', }, { value: 0, label: '1-byte hop identifiers', description: 'Least repeater disambiguation, up to 63 hops', }, { value: 1, label: '2-byte hop identifiers', description: 'Better repeater disambiguation, up to 32 hops', }, { value: 2, label: '3-byte hop identifiers', description: 'Best repeater disambiguation, up to 21 hops', }, ]; return ( !isOpen && onClose()}> Path Hop Width Override Override the path hash mode for this channel. Wider hop identifiers improve repeater disambiguation but extend send time and will prevent users on old (<1.14) firmware from receiving the message.
{channelName}
Current override:{' '} {currentOverride != null ? (PATH_HASH_MODE_LABELS[currentOverride] ?? `mode ${currentOverride}`) : `none (using radio default: ${radioDefaultLabel})`}
{options.map((opt) => ( ))}
); }