Repository navigation
fix(chat): restyle the archive chips and toast, and route toasts through ToastController - #949
Merged
Merged
Conversation
A solid white chip was the brightest thing on the dark chat list. Selected chips now take white at 16% over the background with the main text colour; unselected chips have no fill and use the secondary text colour, per the shared chat-archive spec.
The toast is now a full-width frosted pill inset 12pt from each edge, with a white 10% hairline, an 18pt archive icon, the message at 14pt, and Undo in its own pill filled white at 12%. A swipe down dismisses it, and the message is announced to VoiceOver each time a toast appears, including when a new archive replaces the current one. The 4s lifetime and single-toast behaviour are unchanged.
A 1pt white 10% hairline, matching the undo toast's border, so unselected chips read as chips rather than loose labels.
The undo toast's pill (frosted fill, white 10% outline, optional icon and action pill, optional swipe-down dismiss) moves into FlipcashUI as FloatingToast. ArchiveUndoToast now wraps it, and the You tab's version-unlock countdown uses it in place of ToastLabel. The countdown toast is taller than ToastLabel, so it now sits on the footer's top edge rather than at a fixed offset, keeping the version text uncovered. It keeps the you-version-toast identifier on the message text, which the UI tests match as static text.
The archive toast keeps the full-width pill, inset 12pt. The developer toast on the You tab uses the new .fit width: it hugs its message, caps at the floating tab bar's width, and passes taps through to the version footer so the countdown keeps counting.
Swipe actions fill SF Symbols by default; the shared design uses the outlined archivebox.
HomeTabView publishes the floating tab bar's inset while the bar shows. FloatingToast caps its width at the bar's, and floatingToastTransition() swells the toast up from behind the bar, or slides it in from the bottom edge when no bar is showing. SwiftUI has no glass morph out of the native UITabBar, and the iOS 26.1 tabViewBottomAccessory cross-fades and wraps its content in a second glass capsule, so this approximates the morph.
The toast grows out of the floating tab bar, so it takes the bar's surface: capsuleGlassBackground(), which is Liquid Glass on iOS 26 and the ultra-thin material below. The white hairline goes too; neither tab bar has one.
Screens drew their own toast overlays and timers, so each one had to work out the tab bar's clearance itself; the chats screen missed the iOS 18 pill until a9b264a. Screens now call `toasts.show(_:)` on a ToastController held on Container, and HomeTabView hosts the one toast: above the tab bar when it shows, at the screen's bottom edge when it is hidden. A new toast replaces the one up, and each is announced to VoiceOver. A toast with an action takes touches and swipes down to dismiss; one without lets touches through, which keeps the version-footer countdown counting when the toast covers it. VersionTapUnlock now returns the line to show instead of owning a message and timer.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #948: brings the filter chips and the archive undo toast in line with the chat-archive design shared with Android, and moves toasts onto one app-wide controller.
Filter chips
Toasts
Screens no longer draw their own toast overlay and timer. They call
toasts.show(_:)on aToastControllerheld onContainer, andHomeTabViewhosts the one toast:As on Android (code-payments/code-android-app#1669), a covered host doesn't keep a toast under the cover. A router sheet or the bill dismisses the toast showing, and
showdrops a toast while any sheet or dialog is presented. A sheet a screen presents itself doesn't dismiss a toast already up; that one stays under it until it times out.show(_:inPlace:)keeps the showing toast's view, so the developer countdown changes its text without replaying the entrance.Toast design
FloatingToastis the shared pill:capsuleGlassBackground()), no border, so a toast growing out of the bar reads as part of it.The archive toast is "Chat archived" with Undo, for 4s. The developer countdown keeps its 2s.
Swipe actions
Archive and unarchive draw their icons as outlines. Swipe actions fill symbols by default.