Fix Sidebar render purity for history bucket grouping

This commit is contained in:
ashione
2026-03-08 01:18:07 +08:00
parent a10b1afa8b
commit 3817c388a8

View File

@@ -3,7 +3,7 @@
* Navigation sidebar with menu items. * Navigation sidebar with menu items.
* No longer fixed - sits inside the flex layout below the title bar. * No longer fixed - sits inside the flex layout below the title bar.
*/ */
import { useState } from 'react'; import { useEffect, useState } from 'react';
import { NavLink, useLocation, useNavigate } from 'react-router-dom'; import { NavLink, useLocation, useNavigate } from 'react-router-dom';
import { import {
Home, Home,
@@ -92,6 +92,8 @@ function getSessionBucket(activityMs: number, nowMs: number): SessionBucketKey {
return 'older'; return 'older';
} }
const INITIAL_NOW_MS = Date.now();
export function Sidebar() { export function Sidebar() {
const sidebarCollapsed = useSettingsStore((state) => state.sidebarCollapsed); const sidebarCollapsed = useSettingsStore((state) => state.sidebarCollapsed);
const setSidebarCollapsed = useSettingsStore((state) => state.setSidebarCollapsed); const setSidebarCollapsed = useSettingsStore((state) => state.setSidebarCollapsed);
@@ -130,7 +132,14 @@ export function Sidebar() {
const { t } = useTranslation(['common', 'chat']); const { t } = useTranslation(['common', 'chat']);
const [sessionToDelete, setSessionToDelete] = useState<{ key: string; label: string } | null>(null); const [sessionToDelete, setSessionToDelete] = useState<{ key: string; label: string } | null>(null);
const nowMs = Date.now(); const [nowMs, setNowMs] = useState(INITIAL_NOW_MS);
useEffect(() => {
const timer = window.setInterval(() => {
setNowMs(Date.now());
}, 60 * 1000);
return () => window.clearInterval(timer);
}, []);
const sessionBuckets: Array<{ key: SessionBucketKey; label: string; sessions: typeof sessions }> = [ const sessionBuckets: Array<{ key: SessionBucketKey; label: string; sessions: typeof sessions }> = [
{ key: 'today', label: t('chat:historyBuckets.today'), sessions: [] }, { key: 'today', label: t('chat:historyBuckets.today'), sessions: [] },
{ key: 'yesterday', label: t('chat:historyBuckets.yesterday'), sessions: [] }, { key: 'yesterday', label: t('chat:historyBuckets.yesterday'), sessions: [] },