v0.11.10 ui changes

This commit is contained in:
2026-03-21 18:50:34 -04:00
parent c5a8d728d2
commit 253bc1f963
5 changed files with 40 additions and 8 deletions

View File

@@ -146,6 +146,30 @@ export default function Chat() {
return () => document.removeEventListener('visibilitychange', handleVisibility);
}, []);
// When a message is deleted, update the sidebar preview immediately.
// ChatWindow passes back the full post-delete messages array so we can derive
// the new latest non-deleted message without an extra API call.
const handleMessageDeleted = useCallback(({ groupId, messages: updatedMessages }) => {
const latest = [...updatedMessages]
.reverse()
.find(m => !m.is_deleted);
setGroups(prev => {
const updateGroup = (g) => {
if (g.id !== groupId) return g;
return {
...g,
last_message: latest ? (latest.content || (latest.image_url ? '📷 Image' : '')) : null,
last_message_at: latest ? latest.created_at : null,
last_message_user_id: latest ? latest.user_id : null,
};
};
return {
publicGroups: prev.publicGroups.map(updateGroup),
privateGroups: prev.privateGroups.map(updateGroup),
};
});
}, []);
// Socket message events to update group previews
useEffect(() => {
if (!socket) return;
@@ -490,6 +514,7 @@ export default function Chat() {
onBack={isMobile ? () => { setShowSidebar(true); setActiveGroupId(null); } : null}
onGroupUpdated={loadGroups}
onDirectMessage={(g) => { loadGroups(); selectGroup(g.id); }}
onMessageDeleted={handleMessageDeleted}
onlineUserIds={onlineUserIds} />
)}
</div>