diff --git a/app/api/chat/conversations/route.ts b/app/api/chat/conversations/route.ts index 045109e..451f430 100644 --- a/app/api/chat/conversations/route.ts +++ b/app/api/chat/conversations/route.ts @@ -14,8 +14,8 @@ const createConversationSchema = z.object({ const getConversationsSchema = z.object({ language: z.enum(['ro', 'en']).optional(), - limit: z.string().transform(Number).pipe(z.number().min(1).max(50)).optional().default('20'), - offset: z.string().transform(Number).pipe(z.number().min(0)).optional().default('0'), + limit: z.string().optional().default('20').transform(Number).pipe(z.number().min(1).max(50)), + offset: z.string().optional().default('0').transform(Number).pipe(z.number().min(0)), }) // GET /api/chat/conversations - List user's conversations @@ -44,7 +44,11 @@ export async function GET(request: NextRequest) { // Parse query parameters const url = new URL(request.url) - const queryParams = Object.fromEntries(url.searchParams.entries()) + const queryParams = { + language: url.searchParams.get('language') || undefined, + limit: url.searchParams.get('limit') || '20', + offset: url.searchParams.get('offset') || '0' + } const { language, limit, offset } = getConversationsSchema.parse(queryParams) // Build where clause diff --git a/app/api/chat/route.ts b/app/api/chat/route.ts index 3822c09..a90fc9a 100644 --- a/app/api/chat/route.ts +++ b/app/api/chat/route.ts @@ -29,15 +29,21 @@ export async function POST(request: NextRequest) { // Try to get user from authentication (optional for backward compatibility) let userId: string | null = null const authHeader = request.headers.get('authorization') + console.log('Chat API - authHeader present:', !!authHeader) if (authHeader?.startsWith('Bearer ')) { try { const token = authHeader.substring(7) - const payload = verifyToken(token) + console.log('Chat API - token extracted, length:', token.length) + const payload = await verifyToken(token) + console.log('Chat API - token payload:', payload) userId = payload.userId + console.log('Chat API - userId extracted from token:', userId) } catch (error) { // Continue without authentication for backward compatibility - console.log('Chat without authentication') + console.log('Chat API - authentication failed:', error.message) } + } else { + console.log('Chat API - no valid auth header') } // Handle conversation logic @@ -97,6 +103,11 @@ export async function POST(request: NextRequest) { const aiResponse = await generateBiblicalResponse(message, locale, conversationHistory) // Save messages to database if user is authenticated + console.log('Chat API - conversation saving check:', { + userId: userId ? 'present' : 'null', + finalConversationId: finalConversationId ? 'present' : 'null', + willSave: !!(userId && finalConversationId) + }) if (userId && finalConversationId) { await prisma.$transaction([ // Save user message diff --git a/components/chat/floating-chat.tsx b/components/chat/floating-chat.tsx index 36efdb0..032b97d 100644 --- a/components/chat/floating-chat.tsx +++ b/components/chat/floating-chat.tsx @@ -24,7 +24,6 @@ import { DialogTitle, DialogContent, DialogActions, - CircularProgress, } from '@mui/material' import { Chat, @@ -139,6 +138,7 @@ export default function FloatingChat() { const checkAuthStatus = useCallback(async () => { try { const token = localStorage.getItem('authToken') + console.log('Chat - checkAuthStatus: token from localStorage:', token ? 'present' : 'null') if (token) { // Verify token with the server const response = await fetch('/api/auth/me', { @@ -146,18 +146,25 @@ export default function FloatingChat() { 'Authorization': `Bearer ${token}` } }) + console.log('Chat - auth verification response:', response.ok) if (response.ok) { setAuthToken(token) setIsAuthenticated(true) + console.log('Chat - Auth state set: authenticated') } else { localStorage.removeItem('authToken') setIsAuthenticated(false) setAuthToken(null) + console.log('Chat - Auth verification failed, cleared state') } + } else { + console.log('Chat - No token in localStorage') + setIsAuthenticated(false) + setAuthToken(null) } } catch (error) { - console.error('Auth check failed:', error) + console.error('Chat - Auth check failed:', error) setIsAuthenticated(false) setAuthToken(null) } @@ -342,8 +349,12 @@ export default function FloatingChat() { } // Add authentication if available + console.log('Chat - authToken value:', authToken ? 'present' : 'null') if (authToken) { headers['Authorization'] = `Bearer ${authToken}` + console.log('Chat - Authorization header added') + } else { + console.log('Chat - No authToken, skipping Authorization header') } const response = await fetch('/api/chat', { @@ -569,7 +580,7 @@ export default function FloatingChat() { ) : isLoadingConversations ? ( - + ⟳ ) : conversations.length === 0 ? (