|
1 | | -import { useCallback, useSyncExternalStore } from 'react' |
| 1 | +import { useCallback, useState, useSyncExternalStore } from 'react' |
2 | 2 | import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' |
3 | 3 | import { MCP_SERVER } from '~/constants' |
4 | 4 | import { useAuthContext } from '~/containers/Subscribtion/auth' |
| 5 | +import { useMedia } from '~/hooks/useMedia' |
5 | 6 | import { handleSimpleFetchResponse } from '~/utils/async' |
6 | 7 |
|
7 | 8 | export interface ChatSession { |
@@ -258,17 +259,24 @@ export function useChatHistory() { |
258 | 259 | () => 'true' |
259 | 260 | ) |
260 | 261 |
|
| 262 | + const [sidebarHiddenMobile, setSidebarHiddenMobile] = useState('true') |
| 263 | + const isMobile = useMedia('(max-width: 640px)') |
| 264 | + |
| 265 | + const toggleSidebarMobile = useCallback(() => { |
| 266 | + setSidebarHiddenMobile((prev) => (prev === 'true' ? 'false' : 'true')) |
| 267 | + }, []) |
| 268 | + |
261 | 269 | return { |
262 | 270 | sessions, |
263 | 271 | isLoading, |
264 | | - sidebarVisible: sidebarHidden !== 'true', |
| 272 | + sidebarVisible: isMobile ? sidebarHiddenMobile !== 'true' : sidebarHidden !== 'true', |
265 | 273 | createFakeSession, |
266 | 274 | restoreSession, |
267 | 275 | loadMoreMessages, |
268 | 276 | deleteSession: deleteSessionMutation.mutateAsync, |
269 | 277 | updateSessionTitle: updateTitleMutation.mutateAsync, |
270 | 278 | moveSessionToTop, |
271 | | - toggleSidebar, |
| 279 | + toggleSidebar: isMobile ? toggleSidebarMobile : toggleSidebar, |
272 | 280 | isCreatingSession: createSessionMutation.isPending, |
273 | 281 | isRestoringSession: restoreSessionMutation.isPending, |
274 | 282 | isDeletingSession: deleteSessionMutation.isPending, |
|
0 commit comments