Use a dropdown for default send behavior (#3644)

* fix(app): make default send a dropdown

Keep the compact three-choice setting behind one anchored control while preserving the selected behavior and persistence flow.

* test(app): select default send behavior from its menu

The agent-message submission coverage configures send behavior through Settings, so it follows the dropdown interaction rather than the removed segmented buttons.
This commit is contained in:
Mohamed Boudra
2026-08-21 15:10:14 +02:00
committed by GitHub
parent 29883cb797
commit 2caecdaae8
3 changed files with 65 additions and 10 deletions
+41 -6
View File
@@ -284,6 +284,24 @@ interface ServiceUrlBehaviorMenuItemProps {
onChange: (value: ServiceUrlBehavior) => void;
}
interface SendBehaviorMenuItemProps {
value: SendBehavior;
label: string;
selected: boolean;
onChange: (value: SendBehavior) => void;
}
function SendBehaviorMenuItem({ value, label, selected, onChange }: SendBehaviorMenuItemProps) {
const handleSelect = useCallback(() => {
onChange(value);
}, [onChange, value]);
return (
<DropdownMenuItem selected={selected} onSelect={handleSelect}>
{label}
</DropdownMenuItem>
);
}
function ServiceUrlBehaviorMenuItem({
value,
label,
@@ -336,6 +354,9 @@ function GeneralSection({
const { t, i18n } = useTranslation();
const activeLocale = getActiveLocale(i18n.language);
const sendBehaviorOptions = useMemo(() => getSendBehaviorOptions(t), [t]);
const selectedSendBehaviorLabel =
sendBehaviorOptions.find((option) => option.value === settings.sendBehavior)?.label ??
settings.sendBehavior;
const sendBehaviorDescriptionKey = `settings.general.defaultSend.descriptions.${settings.sendBehavior}`;
const selectedLanguageOption = LANGUAGE_OPTIONS.find(
(option) => option.value === settings.language,
@@ -380,12 +401,26 @@ function GeneralSection({
<Text style={settingsStyles.rowTitle}>{t("settings.general.defaultSend.label")}</Text>
<Text style={settingsStyles.rowHint}>{t(sendBehaviorDescriptionKey)}</Text>
</View>
<SegmentedControl
size="sm"
value={settings.sendBehavior}
onValueChange={handleSendBehaviorChange}
options={sendBehaviorOptions}
/>
<DropdownMenu>
<DropdownTrigger
accessibilityRole="button"
accessibilityLabel={`${t("settings.general.defaultSend.label")}: ${selectedSendBehaviorLabel}`}
style={themeTriggerStyle}
>
<Text style={styles.themeTriggerText}>{selectedSendBehaviorLabel}</Text>
</DropdownTrigger>
<DropdownMenuContent side="bottom" align="end" width={200}>
{sendBehaviorOptions.map((option) => (
<SendBehaviorMenuItem
key={option.value}
value={option.value}
label={option.label}
selected={settings.sendBehavior === option.value}
onChange={handleSendBehaviorChange}
/>
))}
</DropdownMenuContent>
</DropdownMenu>
</View>
<View style={[settingsStyles.row, settingsStyles.rowBorder]}>
<View style={settingsStyles.rowContent}>