import 'dart:developer'; import 'package:mnemo_cards_backend/api/authorize/helpers.dart'; import 'package:mnemo_cards_backend/statistics/session_tracker.dart'; import 'package:shelf/shelf.dart'; /// Middleware for tracking user study sessions based on API activity /// /// This middleware automatically updates user sessions when they make authenticated /// API requests, ensuring session tracking covers all user activities beyond just tests. Middleware sessionTrackingMiddleware(SessionTracker sessionTracker) { return (Handler inner) { return (Request request) async { final user = request.user; // Only track sessions for authenticated users if (user != null && user.id != null) { try { // Get or create session for this user // We don't specify packId or testId here since this is general activity tracking await sessionTracker.getOrCreateSession(user.id!); // Note: We don't update progress here since we don't know what the user is doing // Progress updates happen in specific handlers (like test completion) } catch (e) { // Log error but don't fail the request - session tracking is not critical log('Session tracking middleware error: $e'); } } // Continue with the request return await inner(request); }; }; }