feat(auth): Prevent tool selection after logout and improve state management
This commit is contained in:
@@ -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';
|
||||
|
||||
@@ -786,6 +787,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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -43,6 +43,7 @@ class ToolsList extends _$ToolsList {
|
||||
return;
|
||||
}
|
||||
Future.microtask(() async {
|
||||
if (!ref.mounted) return;
|
||||
await refresh();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user