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:
@@ -10,6 +10,7 @@ import 'token_validator.dart';
|
|||||||
import 'auth_cache_manager.dart';
|
import 'auth_cache_manager.dart';
|
||||||
import '../utils/debug_logger.dart';
|
import '../utils/debug_logger.dart';
|
||||||
import '../utils/user_avatar_utils.dart';
|
import '../utils/user_avatar_utils.dart';
|
||||||
|
import '../../features/tools/providers/tools_providers.dart';
|
||||||
|
|
||||||
part 'auth_state_manager.g.dart';
|
part 'auth_state_manager.g.dart';
|
||||||
|
|
||||||
@@ -807,6 +808,7 @@ class AuthStateManager extends _$AuthStateManager {
|
|||||||
// Invalidate all auth-related providers to clear cached data
|
// Invalidate all auth-related providers to clear cached data
|
||||||
ref.invalidate(activeServerProvider);
|
ref.invalidate(activeServerProvider);
|
||||||
ref.invalidate(serverConfigsProvider);
|
ref.invalidate(serverConfigsProvider);
|
||||||
|
ref.invalidate(toolsListProvider);
|
||||||
|
|
||||||
// Clear auth cache manager
|
// Clear auth cache manager
|
||||||
_cacheManager.clearAuthCache();
|
_cacheManager.clearAuthCache();
|
||||||
|
|||||||
@@ -851,6 +851,16 @@ final modelToolsAutoSelectionProvider = Provider<void>((ref) {
|
|||||||
ref.keepAlive();
|
ref.keepAlive();
|
||||||
|
|
||||||
Future<void> applyTools(Model? model) async {
|
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) {
|
if (model == null) {
|
||||||
final current = ref.read(selectedToolIdsProvider);
|
final current = ref.read(selectedToolIdsProvider);
|
||||||
if (current.isNotEmpty) {
|
if (current.isNotEmpty) {
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class ToolsList extends _$ToolsList {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Future.microtask(() async {
|
Future.microtask(() async {
|
||||||
|
if (!ref.mounted) return;
|
||||||
await refresh();
|
await refresh();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user