diff --git a/frontend/src/app/(dashboard)/notebooks/[id]/page.tsx b/frontend/src/app/(dashboard)/notebooks/[id]/page.tsx
index 97ec398..16792a2 100644
--- a/frontend/src/app/(dashboard)/notebooks/[id]/page.tsx
+++ b/frontend/src/app/(dashboard)/notebooks/[id]/page.tsx
@@ -185,6 +185,8 @@ export default function NotebookPage() {
)}
@@ -234,6 +236,8 @@ export default function NotebookPage() {
diff --git a/frontend/src/app/(dashboard)/notebooks/components/ChatColumn.test.tsx b/frontend/src/app/(dashboard)/notebooks/components/ChatColumn.test.tsx
index 5e2b7f5..70e4ea2 100644
--- a/frontend/src/app/(dashboard)/notebooks/components/ChatColumn.test.tsx
+++ b/frontend/src/app/(dashboard)/notebooks/components/ChatColumn.test.tsx
@@ -1,26 +1,16 @@
import { render, screen } from '@testing-library/react'
import { describe, it, expect, vi } from 'vitest'
import { ChatColumn } from './ChatColumn'
-import { useSources } from '@/lib/hooks/use-sources'
import { useNotes } from '@/lib/hooks/use-notes'
import { useNotebookChat } from '@/lib/hooks/useNotebookChat'
// Mock the hooks
-vi.mock('@/lib/hooks/use-sources')
vi.mock('@/lib/hooks/use-notes')
vi.mock('@/lib/hooks/useNotebookChat')
vi.mock('@/components/source/ChatPanel', () => ({
ChatPanel: () =>
}))
-// Type-safe mock factory for useSources hook
-function createSourcesMock(overrides: { isLoading?: boolean } = {}) {
- return {
- data: [],
- isLoading: overrides.isLoading ?? false,
- } as unknown as ReturnType
-}
-
// Type-safe mock factory for useNotes hook
function createNotesMock(overrides: { isLoading?: boolean } = {}) {
return {
@@ -42,32 +32,31 @@ function createChatMock() {
}
describe('ChatColumn', () => {
- const mockProps = {
+ const baseProps = {
notebookId: 'test-notebook',
contextSelections: {
sources: {},
notes: {}
- }
+ },
+ sources: [],
}
it('shows loading spinner when fetching data', () => {
- vi.mocked(useSources).mockReturnValue(createSourcesMock({ isLoading: true }))
vi.mocked(useNotes).mockReturnValue(createNotesMock({ isLoading: true }))
vi.mocked(useNotebookChat).mockReturnValue(createChatMock())
- render()
-
+ render()
+
// Should show loading spinner
expect(screen.getByTestId('loading-spinner')).toBeInTheDocument()
})
it('renders chat panel when data is loaded', () => {
- vi.mocked(useSources).mockReturnValue(createSourcesMock({ isLoading: false }))
vi.mocked(useNotes).mockReturnValue(createNotesMock({ isLoading: false }))
vi.mocked(useNotebookChat).mockReturnValue(createChatMock())
- render()
-
+ render()
+
// Should show chat panel
expect(screen.getByTestId('chat-panel')).toBeInTheDocument()
})
diff --git a/frontend/src/app/(dashboard)/notebooks/components/ChatColumn.tsx b/frontend/src/app/(dashboard)/notebooks/components/ChatColumn.tsx
index cc7a943..181e630 100644
--- a/frontend/src/app/(dashboard)/notebooks/components/ChatColumn.tsx
+++ b/frontend/src/app/(dashboard)/notebooks/components/ChatColumn.tsx
@@ -2,7 +2,6 @@
import { useMemo } from 'react'
import { useNotebookChat } from '@/lib/hooks/useNotebookChat'
-import { useSources } from '@/lib/hooks/use-sources'
import { useNotes } from '@/lib/hooks/use-notes'
import { ChatPanel } from '@/components/source/ChatPanel'
import { LoadingSpinner } from '@/components/common/LoadingSpinner'
@@ -10,17 +9,19 @@ import { Card, CardContent } from '@/components/ui/card'
import { AlertCircle } from 'lucide-react'
import { ContextSelections } from '../[id]/page'
import { useTranslation } from '@/lib/hooks/use-translation'
+import { SourceListResponse } from '@/lib/types/api'
interface ChatColumnProps {
notebookId: string
contextSelections: ContextSelections
+ sources: SourceListResponse[]
+ sourcesLoading: boolean
}
-export function ChatColumn({ notebookId, contextSelections }: ChatColumnProps) {
+export function ChatColumn({ notebookId, contextSelections, sources, sourcesLoading }: ChatColumnProps) {
const { t } = useTranslation()
- // Fetch sources and notes for this notebook
- const { data: sources = [], isLoading: sourcesLoading } = useSources(notebookId)
+ // Fetch notes for this notebook
const { data: notes = [], isLoading: notesLoading } = useNotes(notebookId)
// Initialize notebook chat hook