34 lines
1.1 KiB
Dart
34 lines
1.1 KiB
Dart
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<void>((ref) async {
|
|
final repository = getIt<QuestiaRepository>();
|
|
|
|
// 1. Logout from Treezor SDK (disconnect active wallet session)
|
|
try {
|
|
final connectionService = getIt<TreezorWalletConnectionService>();
|
|
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<void>('/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();
|
|
});
|