Merge pull request #721 from lfnovo/fix/source-list-auto-refresh-526
fix: source list auto-refresh after adding new source (#526)
This commit is contained in:
commit
2008a6b4d1
2 changed files with 58 additions and 3 deletions
43
dev-init.sh
Executable file
43
dev-init.sh
Executable file
|
|
@ -0,0 +1,43 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Development environment startup for Open Notebook
|
||||||
|
# Assumes SurrealDB is already running externally (per .env config)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "=== Open Notebook Dev Startup ==="
|
||||||
|
|
||||||
|
# Check SurrealDB connectivity
|
||||||
|
SURREAL_PORT=${SURREAL_PORT:-8018}
|
||||||
|
echo "Checking SurrealDB on port $SURREAL_PORT..."
|
||||||
|
if ! nc -z localhost "$SURREAL_PORT" 2>/dev/null; then
|
||||||
|
echo "❌ SurrealDB not reachable on port $SURREAL_PORT. Please start it first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✅ SurrealDB is running"
|
||||||
|
|
||||||
|
# Install dependencies if needed
|
||||||
|
echo "Syncing Python dependencies..."
|
||||||
|
uv sync
|
||||||
|
|
||||||
|
echo "Syncing frontend dependencies..."
|
||||||
|
cd frontend && npm install && cd ..
|
||||||
|
|
||||||
|
# Start API backend in background
|
||||||
|
echo "Starting API backend (port 5055)..."
|
||||||
|
uv run --env-file .env run_api.py &
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
# Start background worker in background
|
||||||
|
echo "Starting background worker..."
|
||||||
|
uv run --env-file .env surreal-commands-worker --import-modules commands &
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
# Start frontend (foreground)
|
||||||
|
echo "Starting Next.js frontend (port 3000)..."
|
||||||
|
echo ""
|
||||||
|
echo "✅ All services starting!"
|
||||||
|
echo " Frontend: http://localhost:3000"
|
||||||
|
echo " API: http://localhost:5055"
|
||||||
|
echo " API Docs: http://localhost:5055/docs"
|
||||||
|
echo ""
|
||||||
|
cd frontend && npm run dev
|
||||||
|
|
@ -99,7 +99,11 @@ export function useCreateSource() {
|
||||||
variables.notebooks.forEach(notebookId => {
|
variables.notebooks.forEach(notebookId => {
|
||||||
queryClient.invalidateQueries({
|
queryClient.invalidateQueries({
|
||||||
queryKey: QUERY_KEYS.sources(notebookId),
|
queryKey: QUERY_KEYS.sources(notebookId),
|
||||||
refetchType: 'active' // Refetch active queries immediately
|
refetchType: 'active'
|
||||||
|
})
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: QUERY_KEYS.sourcesInfinite(notebookId),
|
||||||
|
refetchType: 'active'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
} else if (variables.notebook_id) {
|
} else if (variables.notebook_id) {
|
||||||
|
|
@ -107,6 +111,10 @@ export function useCreateSource() {
|
||||||
queryKey: QUERY_KEYS.sources(variables.notebook_id),
|
queryKey: QUERY_KEYS.sources(variables.notebook_id),
|
||||||
refetchType: 'active'
|
refetchType: 'active'
|
||||||
})
|
})
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: QUERY_KEYS.sourcesInfinite(variables.notebook_id),
|
||||||
|
refetchType: 'active'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Invalidate general sources query too with immediate refetch
|
// Invalidate general sources query too with immediate refetch
|
||||||
|
|
@ -201,8 +209,12 @@ export function useFileUpload() {
|
||||||
mutationFn: ({ file, notebookId }: { file: File; notebookId: string }) =>
|
mutationFn: ({ file, notebookId }: { file: File; notebookId: string }) =>
|
||||||
sourcesApi.upload(file, notebookId),
|
sourcesApi.upload(file, notebookId),
|
||||||
onSuccess: (_, variables) => {
|
onSuccess: (_, variables) => {
|
||||||
queryClient.invalidateQueries({
|
queryClient.invalidateQueries({
|
||||||
queryKey: QUERY_KEYS.sources(variables.notebookId)
|
queryKey: QUERY_KEYS.sources(variables.notebookId)
|
||||||
|
})
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: QUERY_KEYS.sourcesInfinite(variables.notebookId),
|
||||||
|
refetchType: 'active'
|
||||||
})
|
})
|
||||||
toast({
|
toast({
|
||||||
title: t.common.success,
|
title: t.common.success,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue