From ec4aba99678d23995173f32c09e8264ef02dd8f5 Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Thu, 5 Mar 2026 14:11:12 +0100 Subject: [PATCH] Add toggle to expand session name in mobile app active sessions screen (#1812) --- .../settings/security/active-sessions.tsx | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/mobile-app/app/(tabs)/settings/security/active-sessions.tsx b/apps/mobile-app/app/(tabs)/settings/security/active-sessions.tsx index 4482e883c..429fc88ef 100644 --- a/apps/mobile-app/app/(tabs)/settings/security/active-sessions.tsx +++ b/apps/mobile-app/app/(tabs)/settings/security/active-sessions.tsx @@ -27,6 +27,7 @@ export default function ActiveSessionsScreen() : React.ReactNode { const [refreshTokens, setRefreshTokens] = useState([]); const [isLoading, setIsLoading] = useMinDurationLoading(true, 200); const [isRefreshing, setIsRefreshing] = useMinDurationLoading(false, 200); + const [expandedSessions, setExpandedSessions] = useState>(new Set()); const styles = StyleSheet.create({ detailText: { @@ -158,6 +159,27 @@ export default function ActiveSessionsScreen() : React.ReactNode { return dateObject.toISOString().slice(0, 16).replace('T', ' '); }; + /** + * Toggle the expansion state of a session. + * @param sessionId - The session ID to toggle + */ + const toggleSessionExpansion = (sessionId: string) : void => { + setExpandedSessions((prev) => { + const newSet = new Set(prev); + if (newSet.has(sessionId)) { + newSet.delete(sessionId); + } else { + newSet.add(sessionId); + } + return newSet; + }); + + // Trigger haptic feedback when toggling + if (Platform.OS === 'ios' || Platform.OS === 'android') { + Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); + } + }; + return ( ( - {item.deviceIdentifier} + toggleSessionExpansion(item.id)} + activeOpacity={0.7} + > + + {item.deviceIdentifier} + + handleRevokeSession(item.id)}> {t('settings.securitySettings.activeSessions.revoke')}