Skip to content

Commit 18e2742

Browse files
saphidgithub-actions[bot]claude
authored
fix(mobile): undo toasts keep their action on one row (pingdotgg#23910)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 5127302 commit 18e2742

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

‎apps/mobile/src/components/ui/Toast.tsx‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { MOBILE_SHAPE } from "../../lib/designTokens";
22
import { useEffect } from "react";
3-
import { AccessibilityInfo, Platform, View } from "react-native";
3+
import { AccessibilityInfo, Platform, View, useWindowDimensions } from "react-native";
44

55
import { AppText } from "./AppText";
66
import { Button } from "./Button";
@@ -20,6 +20,13 @@ export interface ToastProps {
2020

2121
/** The owning screen places and dismisses feedback; actions are never implicit. */
2222
export function Toast(props: ToastProps) {
23+
const { fontScale } = useWindowDimensions();
24+
// A one-line message keeps its action on the same row. Descriptions and
25+
// accessibility text sizes need the full width, so the action moves below.
26+
const inlineAction = !props.description && fontScale < 1.5;
27+
const action = props.action ? (
28+
<Button label={props.action.label} onPress={props.action.onPress} />
29+
) : null;
2330
useEffect(() => {
2431
if (Platform.OS === "ios") AccessibilityInfo.announceForAccessibility(props.message);
2532
}, [props.message]);
@@ -47,15 +54,12 @@ export function Toast(props: ToastProps) {
4754
</AppText>
4855
) : null}
4956
</View>
57+
{inlineAction ? action : null}
5058
{props.onDismiss ? (
5159
<IconButton accessibilityLabel="Dismiss message" icon="xmark" onPress={props.onDismiss} />
5260
) : null}
5361
</View>
54-
{props.action ? (
55-
<View className="mt-2 self-end">
56-
<Button label={props.action.label} onPress={props.action.onPress} />
57-
</View>
58-
) : null}
62+
{action && !inlineAction ? <View className="mt-2 self-end">{action}</View> : null}
5963
</GlassSurface>
6064
);
6165
}

0 commit comments

Comments
 (0)