diff --git a/lib/core/auth/auth_state_manager.dart b/lib/core/auth/auth_state_manager.dart index 6883d20..bc85dd0 100644 --- a/lib/core/auth/auth_state_manager.dart +++ b/lib/core/auth/auth_state_manager.dart @@ -10,6 +10,7 @@ import 'token_validator.dart'; import 'auth_cache_manager.dart'; import '../utils/debug_logger.dart'; import '../utils/user_avatar_utils.dart'; +import '../../features/tools/providers/tools_providers.dart'; part 'auth_state_manager.g.dart'; @@ -807,6 +808,7 @@ class AuthStateManager extends _$AuthStateManager { // Invalidate all auth-related providers to clear cached data ref.invalidate(activeServerProvider); ref.invalidate(serverConfigsProvider); + ref.invalidate(toolsListProvider); // Clear auth cache manager _cacheManager.clearAuthCache(); diff --git a/lib/core/providers/app_providers.dart b/lib/core/providers/app_providers.dart index 3581aa2..27e42ec 100644 --- a/lib/core/providers/app_providers.dart +++ b/lib/core/providers/app_providers.dart @@ -851,6 +851,16 @@ final modelToolsAutoSelectionProvider = Provider((ref) { ref.keepAlive(); Future applyTools(Model? model) async { + // Skip if not authenticated - prevents API calls after logout + final authState = ref.read(authStateManagerProvider).asData?.value; + if (authState == null || !authState.isAuthenticated) { + final current = ref.read(selectedToolIdsProvider); + if (current.isNotEmpty) { + ref.read(selectedToolIdsProvider.notifier).set([]); + } + return; + } + if (model == null) { final current = ref.read(selectedToolIdsProvider); if (current.isNotEmpty) { diff --git a/lib/features/tools/providers/tools_providers.dart b/lib/features/tools/providers/tools_providers.dart index 435c0f2..faf0526 100644 --- a/lib/features/tools/providers/tools_providers.dart +++ b/lib/features/tools/providers/tools_providers.dart @@ -43,6 +43,7 @@ class ToolsList extends _$ToolsList { return; } Future.microtask(() async { + if (!ref.mounted) return; await refresh(); }); }