Files
simplex-chat/plans/2026-05-25-fix-e2e-encryption-section-divider.md
T
Narasimha-scandGitHub f3abb7aa76 android, desktop: fix E2E encryption section divider rendered inside card (#7012)
Move SectionDividerSpaced() out of the SectionView { ... } block so it acts
as inter-section spacing instead of being rendered as the section's last
child. Matches the pattern used by every other section in ChatInfoLayout.

Plan: plans/2026-05-25-fix-e2e-encryption-section-divider.md
2026-05-25 19:34:32 +01:00

51 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Fix E2E encryption section divider rendered inside the section
Branch: `nd/fix-e2e-encryption-section-divider` · base: `master`.
## Problem
On the contact info screen (Android and desktop, current `master`), the "E2E encryption — Quantum resistant / Standard" card has a horizontal divider line cutting across it under its single row, followed by extra padded space — visually reading as the card being sliced in two with a second, empty card underneath. Repros for any 1:1 contact with an active connection. Behaviour of the row itself is correct; bug is purely visual.
## Fix
One line in `apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt` — move `SectionDividerSpaced()` out of the `SectionView { ... }` block:
```diff
if (conn != null) {
SectionView {
InfoRow("E2E encryption", if (conn.connPQEnabled) "Quantum resistant" else "Standard")
- SectionDividerSpaced()
}
+ SectionDividerSpaced()
}
```
Total diff: 1 file, +1 / 1.
## Cause
Two unrelated changes combined to produce the visible bug:
1. PR #4060 (`9e3f528d4`, "android: remove experimental PQ toggle") removed the conditional `AllowContactPQButton` / `SectionTextFooter` that used to sit between the `InfoRow` and the divider — but left `SectionDividerSpaced()` inside the `SectionView { ... }` block. At that point `SectionView` was a plain column, so the leftover divider only looked like extra inter-section spacing.
2. PR #6777 (`df5ea3d46`, "android, desktop: new settings section design") wrapped `SectionView`'s content in `CardColumn` with `SectionCardShape`, giving each section a rounded card background. After this, *anything* drawn by the section content — including the leftover `Divider` — is drawn inside the card.
Rendered structure on current master:
```
SectionView (card background, rounded shape)
└ CardColumn
├ InfoRow("E2E encryption", ...)
├ Divider ← line cutting across the card
└ 18 dp bottom padding ← reads as a second, empty card
```
After the fix the divider re-parents to the enclosing `ChatInfoLayout` column and sits between the E2E card and the next section's card, matching the pattern used by every other section on the screen.
## Risk
- One composable call site, structural move of a single node; no logic, state, or styling change.
- iOS is a separate codebase and is unaffected.
- Grep confirms no other `SectionDividerSpaced` call sits inside a `SectionView { ... }` in `apps/multiplatform`.
- Rollback: `git revert` the fix commit.