import 'package:dio/dio.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:sca_treezor/sca_treezor.dart' show TreezorWalletConnectionService; import 'package:sf_infrastructure/sf_infrastructure.dart'; import 'package:sf_shared/sf_shared.dart' show treezorRepositoryProvider; final logoutProvider = FutureProvider.autoDispose((ref) async { final repository = getIt(); // 1. Logout from Treezor SDK (disconnect active wallet session) try { final connectionService = getIt(); await connectionService.logout(); } catch (_) {} // 2. Clear treezor repository in-memory cache try { final treezorRepository = ref.read(treezorRepositoryProvider); await treezorRepository.resetScaWallets(); } catch (_) {} // 3. Backend logout try { await repository.post('/auth/logout'); } on DioException catch (error) { throw Exception(error.message ?? 'Error in logout'); } // 4. Clear local data (stops heartbeat via onBeforeSessionCleared, // then clears cookies + SharedPreferences) await clearSessionData(); });