Round 2 fixes from on-device testing (#2,#3,#6,#8,#9,#13,#14,#18 + call re-ring)
#2 Don't ping/notify when you're ACTIVELY viewing a chat (app visible + chat open). Alert only when a different chat, OR the open chat while the app is minimised (the backgrounded case that used to stay silent). #3 A reaction to my message now raises an unread badge on that conversation (like a new message), not just a notification. #6 Image lightbox pulls EVERY image in the conversation via /api/messages/media (older images aren't in the DOM yet) — nav arrows reach them all. Nav buttons always in the DOM; syncArrows shows/hides at the ends and for a single image. #8 On app resume (visibilitychange / native appStateChange), reconnect the chat socket if it isn't OPEN and re-pull the sidebar so online/last-seen refresh — iOS freezes the WebView so the socket can be dead while its onclose lags, leaving contacts stuck on a stale "Offline". #9 Real cause was iOS "sticky :hover": a single tap latched :hover and popped the action bar. Gate the hover-reveal behind @media (hover:hover) so touch reveals actions ONLY via long-press; a plain tap performs the primary action. #13 Pinned bar gains a "‹ 1 of n ›" pager to walk through multiple pinned messages (shown only when more than one is pinned). #14 Editing a message no longer eats a half-written draft — the real draft is set aside on edit start and restored on save/cancel. edited_at is now in the message DTO so the "edited" tag survives a reload. #18 One "Delete" entry opens a branded dialog with "Delete for me" / "Delete for everyone" (icons + descriptions) and a ✕/backdrop cancel, replacing the two separate menu items. New: a participant who LEAVES a still-running call is no longer auto-rung back in on every socket reconnect. Track who left per call; replayActiveCalls sends them noRing state (refreshes the Join affordance without ringing). An explicit re-invite clears that and rings again. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
search: '<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',
|
||||
edit: '<path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"/>',
|
||||
trash: '<path d="M3 6h18"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>',
|
||||
eyeOff: '<path d="M9.88 9.88a3 3 0 1 0 4.24 4.24"/><path d="M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68"/><path d="M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61"/><path d="m2 2 20 20"/>',
|
||||
pin: '<path d="M12 17v5"/><path d="M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"/>',
|
||||
pinOff: '<path d="M12 17v5"/><path d="M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89"/><path d="m2 2 20 20"/><path d="M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11"/>',
|
||||
logOut: '<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" x2="9" y1="12" y2="12"/>',
|
||||
|
||||
Reference in New Issue
Block a user