Skip to content

refactor: channel, contact, room detail sheets#360

Merged
Avi0n merged 7 commits into
Avi0n:devfrom
bwees-forks:refactor/user-page
Jul 8, 2026
Merged

refactor: channel, contact, room detail sheets#360
Avi0n merged 7 commits into
Avi0n:devfrom
bwees-forks:refactor/user-page

Conversation

@bwees

@bwees bwees commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Description

Refactors the Channel, Room, and Contact detail sheets to look more consistent and uitize the space better.

Overview of Changes

reworked styling of sheet headers (spacing, sizing, stacking of indicators, etc)
moved favoriting to a consistent action in top left of sheet
added a "Done" button consistently on all pages
left aligned destructive actions to look similar to contact page

image image

Testing

visual changes

Tested on

  • iOS [18,26]
  • iPadOS [26]
  • macOS [26]

Checklist

  • This PR was discussed with the maintainer either via GitHub issue or other means (Also check if this PR is small enough not to need discussion e.g. typo fix)
  • I have read CONTRIBUTING.md
  • Testing steps are documented above.
  • This change is not low effort and I took the time to test it

@bwees
bwees changed the base branch from main to dev July 3, 2026 21:00
@bwees bwees changed the title Refactor/user page refactor: channel, contact, room detail sheets Jul 3, 2026
@Avi0n

Avi0n commented Jul 6, 2026

Copy link
Copy Markdown
Owner

I really like this overall! Two things I'd consider:

  • The favorites button being in the top left comes with some clarity issues. The text is removed so it isn't super clear what the button is for without exiting and realizing it was added to favorites. Could be argued that everyone should intuitively know what the Star button does, but I'd prefer to keep it where it was to mirror the way Apple does it in their Phone app.
  • The "Done" button appears even when viewing the contact in the Nodes tab, which is a pushed view instead of a sheet. Should only see "Done" on sheets.

The rest is AI review:

  • The nickname edit control lost its text and its label.
    Button(L10n...edit) → Button { } label: { Image(systemName: "pencil") }. Icon-only with no .accessibilityLabel reads as "pencil, button." Either keep a label or add one.
  • .contentMargins(.top, 0, for: .scrollContent) is only on ContactDetailView.
    Room and Channel sheets don't get it. The contact header will sit tighter under the nav bar than the other two, so three screens you deliberately unified will have visibly different top spacing. Apply it to all three or none.
  • The scroll-reveal threshold is a fixed revealAfter: 150 that ignores the header's real height — and breaks under Dynamic Type.
    The header (150pt avatar + title2 name + subheadline type) is taller than 150pt at default sizes and grows with Dynamic Type, while the threshold stays constant. Result: the nav-bar title fades in while the large name is still fully on screen — you get the same name twice at once, which is exactly the duplicate-title artifact Apple's real implementation avoids by tracking when the large title crosses the bar. At accessibility text sizes this gets worse. Either derive the threshold from the measured header bottom, or set it high enough to clear the tallest header, and test at the largest Dynamic Type setting.

Comment thread MC1/Extensions/View+ScrollRevealTitle.swift Outdated
Comment thread MC1/Views/Chats/Room/RoomInfoSheet.swift
@Avi0n
Avi0n merged commit 55b5dda into Avi0n:dev Jul 8, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants