Files
memind/src/routes/MindSpaceRoute.tsx
T
john 18ea4f82fd feat(feedback): 新增用户反馈提交、分页列表与语音描述
支持 Bug/需求提交、截图与聊天同款语音输入,全站反馈分页浏览与详情页,并从聊天与空间页提供入口。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 20:49:15 +08:00

42 lines
1.3 KiB
TypeScript

import { matchPath, useLocation, useNavigate, useSearchParams } from 'react-router-dom';
import { MindSpaceView } from '../components/MindSpaceView';
import type { MindSpaceSaveCategory, PortalUser } from '../types';
const CATEGORY_CODES = new Set<MindSpaceSaveCategory>(['draft', 'oa', 'private', 'public']);
function parseCategory(value: string | null): MindSpaceSaveCategory | null {
if (!value || !CATEGORY_CODES.has(value as MindSpaceSaveCategory)) return null;
return value as MindSpaceSaveCategory;
}
export function MindSpaceRoute({
user,
onLogout,
}: {
user: PortalUser;
onLogout: () => void;
}) {
const navigate = useNavigate();
const location = useLocation();
const [searchParams] = useSearchParams();
const pageMatch = matchPath('/space/page/:pageId', location.pathname);
const pageId = pageMatch?.params.pageId ?? null;
const categoryCode = parseCategory(searchParams.get('category'));
return (
<MindSpaceView
user={user}
initialPageId={pageId}
initialCategoryCode={categoryCode}
onBack={() => navigate('/')}
onLogout={onLogout}
onOpenFeedback={() => navigate('/feedback')}
routeSync={{
pushHome: () => navigate('/space'),
pushCategory: (code) => navigate(`/space?category=${code}`),
pushPage: (id) => navigate(`/space/page/${id}`),
}}
/>
);
}