From 2ea681ef7576bc8b3ec9e9fe09a00ce8f7da8967 Mon Sep 17 00:00:00 2001 From: tris203 Date: Tue, 13 Oct 2026 14:43:09 +0000 Subject: [PATCH] fix(mobile): thread rows without swipe actions line up with the rest A thread row skips its swipe wrapper when the client has no operate grant for the row's environment, which is the case for an environment not reached in the current app session. The wrapper also carried the row's container inset, so those rows sat 8dp further out than their neighbours on Android and in the iPad sidebar. They now keep the same container style. --- apps/mobile/src/features/threads/thread-list-v2-items.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/mobile/src/features/threads/thread-list-v2-items.tsx b/apps/mobile/src/features/threads/thread-list-v2-items.tsx index 9c1cbe34bb2cd..4a8306a3fddb5 100644 --- a/apps/mobile/src/features/threads/thread-list-v2-items.tsx +++ b/apps/mobile/src/features/threads/thread-list-v2-items.tsx @@ -1301,7 +1301,11 @@ export const ThreadListV2Row = memo(function ThreadListV2Row(props: { ); - if (!canOperateThread) return rowContent(() => {}); + // Without the swipeable, the row still takes its container inset so it lines + // up with rows that have one. + if (!canOperateThread) { + return {rowContent(() => {})}; + } return (