v0.11.10 ui changes
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user