Merge pull request #222 from cogwheel0/prevent-tool-selection-after-logout

feat(auth): Prevent tool selection after logout and improve state management
This commit is contained in:
cogwheel
2025-12-05 13:58:09 +05:30
committed by GitHub
3 changed files with 13 additions and 0 deletions

View File

@@ -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();

View File

@@ -851,6 +851,16 @@ final modelToolsAutoSelectionProvider = Provider<void>((ref) {
ref.keepAlive();
Future<void> 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) {

View File

@@ -43,6 +43,7 @@ class ToolsList extends _$ToolsList {
return;
}
Future.microtask(() async {
if (!ref.mounted) return;
await refresh();
});
}