Files
sf-app-platform/modules/profile/lib/src/providers/logout_provider.dart
2026-02-25 18:37:17 +01:00

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