v0.9.12 Fixed back swipe

This commit is contained in:
2026-03-14 12:38:46 -04:00
parent e38c7358f6
commit 2d0214fc10
7 changed files with 27 additions and 8 deletions

View File

@@ -149,6 +149,7 @@ export default function Message({ message: msg, prevMessage, currentUser, onRepl
status: msg.user_status,
hide_admin_tag: msg.user_hide_admin_tag,
about_me: msg.user_about_me,
allow_dm: msg.user_allow_dm,
};
return (

View File

@@ -255,12 +255,30 @@ export default function Chat() {
const selectGroup = (id) => {
setActiveGroupId(id);
if (isMobile) setShowSidebar(false);
if (isMobile) {
setShowSidebar(false);
// Push a history entry so swipe-back returns to sidebar instead of exiting the app
window.history.pushState({ jamaChatOpen: true }, '');
}
// Clear notifications and unread count for this group
setNotifications(prev => prev.filter(n => n.groupId !== id));
setUnreadGroups(prev => { const next = new Map(prev); next.delete(id); return next; });
};
// Handle browser back gesture on mobile — return to sidebar instead of exiting
useEffect(() => {
const handlePopState = (e) => {
if (isMobile && activeGroupId) {
setShowSidebar(true);
setActiveGroupId(null);
// Push another entry so subsequent back gestures are also intercepted
window.history.pushState({ jamaChatOpen: true }, '');
}
};
window.addEventListener('popstate', handlePopState);
return () => window.removeEventListener('popstate', handlePopState);
}, [isMobile, activeGroupId]);
// Update page title AND PWA app badge with total unread count
useEffect(() => {
const totalUnread = [...unreadGroups.values()].reduce((a, b) => a + b, 0);