import { useCallback } from 'react'; import { CustomProxy } from '../../shared/daemon-rpc-types'; import { messages } from '../../shared/gettext'; import { Button } from '../lib/components'; import { useBridgeSettingsUpdater } from '../lib/constraint-updater'; import { useHistory } from '../lib/history'; import { useBoolean } from '../lib/utility-hooks'; import { useSelector } from '../redux/store'; import { AppNavigationHeader } from './'; import { SettingsForm } from './cell/SettingsForm'; import { BackAction } from './KeyboardNavigation'; import { Layout, SettingsContainer, SettingsContent, SettingsNavigationScrollbars } from './Layout'; import { ModalAlert, ModalAlertType } from './Modal'; import { NavigationContainer } from './NavigationContainer'; import { ProxyForm } from './ProxyForm'; import SettingsHeader, { HeaderTitle } from './SettingsHeader'; export function EditCustomBridge() { return ( ); } function CustomBridgeForm() { const { pop } = useHistory(); const bridgeSettingsUpdater = useBridgeSettingsUpdater(); const bridgeSettings = useSelector((state) => state.settings.bridgeSettings); const [deleteDialogVisible, showDeleteDialog, hideDeleteDialog] = useBoolean(); // If there are no custom bridge settings, we should prompt the user to add a custom bridge. // Otherwise, we should prompt them to edit the existing custom bridge settings. const title = bridgeSettings.custom === undefined ? messages.pgettext('custom-bridge', 'Add custom bridge') : messages.pgettext('custom-bridge', 'Edit custom bridge'); const onSave = useCallback( (newBridge: CustomProxy) => { void bridgeSettingsUpdater((bridgeSettings) => { bridgeSettings.type = 'custom'; bridgeSettings.custom = newBridge; return bridgeSettings; }); pop(); }, [bridgeSettingsUpdater, pop], ); const onDelete = useCallback(() => { if (bridgeSettings.custom !== undefined) { hideDeleteDialog(); void bridgeSettingsUpdater((bridgeSettings) => { bridgeSettings.type = 'normal'; delete bridgeSettings.custom; return bridgeSettings; }); pop(); } }, [bridgeSettings.custom, bridgeSettingsUpdater, hideDeleteDialog, pop]); return ( {title} {messages.gettext('Cancel')} , , ]} close={hideDeleteDialog} title={messages.pgettext('custom-bridge', 'Delete custom bridge?')} message={messages.pgettext( 'custom-bridge', 'Deleting the custom bridge will take you back to the select location view and the Automatic option will be selected instead.', )} /> ); }