refactor(knowledges): give knowledgeId back to the route param

`knowledgeId` means the route param everywhere else — the route is declared as
`knowledges/:knowledgeId`, and both knowledge.tsx and the route-title resolver
destructure it under that name. This header had taken the name for the loaded
document's id and left the route param as `routeKnowledgeId`, so the one file
that reads both used the project's vocabulary backwards.

The document's id needed no binding of its own: `handleRenameSave` two functions
above already guards on `knowledge` and passes `knowledge.id`, so `handleDelete`
now does the same and the rename input keys off `knowledge?.id`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Sergey Kozyrenko
2026-07-22 18:23:00 +07:00
co-authored by Claude Opus 4.8
parent e51f686e5c
commit f95c48b062
@@ -80,15 +80,14 @@ export function KnowledgeHeader({
viewMode = 'rich',
}: KnowledgeHeaderProps) {
const navigate = useNavigate();
const { knowledgeId: routeKnowledgeId } = useParams();
const { knowledgeId } = useParams();
const { isMobile } = useBreakpoint();
const { deleteKnowledge, renameKnowledge } = useKnowledges();
const [isRenaming, setIsRenaming] = useState(false);
const [isDeleting, setIsDeleting] = useState(false);
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
const documentId = knowledge?.id ?? null;
const knowledgeNav = useKnowledgeDetailNavigation(isNew ? null : (routeKnowledgeId ?? null));
const knowledgeNav = useKnowledgeDetailNavigation(isNew ? null : (knowledgeId ?? null));
// Title source-of-truth is the server-side `question`. We intentionally do
// not read it from the form draft below — the inline rename flow in this
@@ -108,7 +107,7 @@ export function KnowledgeHeader({
isEditing: isEditingTitle,
startEdit: handleRenameStart,
stopEdit: handleRenameCancel,
} = useInlineEdit({ resetKey: documentId });
} = useInlineEdit({ resetKey: knowledge?.id ?? null });
const handleRenameSave = useCallback(async () => {
const newQuestion = editingInputRef.current?.value.trim();
@@ -139,14 +138,14 @@ export function KnowledgeHeader({
}, [editingInputRef, handleRenameCancel, knowledge, renameKnowledge]);
const handleDelete = useCallback(async () => {
if (!documentId) {
if (!knowledge) {
return;
}
setIsDeleting(true);
try {
await deleteKnowledge(documentId);
await deleteKnowledge(knowledge.id);
onBeforeNavigateAway?.();
navigate(routes.knowledges, { replace: true });
} catch {
@@ -154,7 +153,7 @@ export function KnowledgeHeader({
} finally {
setIsDeleting(false);
}
}, [documentId, deleteKnowledge, navigate, onBeforeNavigateAway]);
}, [knowledge, deleteKnowledge, navigate, onBeforeNavigateAway]);
return (
<>