26 lines
943 B
Dart
26 lines
943 B
Dart
import 'dart:developer';
|
|
|
|
import '../api/marianumconnect/queries/auth_logout/auth_logout.dart';
|
|
import '../auth_link/guardian_link_listener.dart';
|
|
import '../push/push_registration.dart';
|
|
import 'session_manager.dart';
|
|
|
|
abstract final class SessionLifecycle {
|
|
/// Ordered teardown: unregister push and revoke the Nextcloud app passwords
|
|
/// (while those credentials still exist), then revoke the MC bearer token,
|
|
/// finally wipe the local session. Each step is best-effort so an offline
|
|
/// sign-out still reaches a clean local state.
|
|
static Future<void> signOut() async {
|
|
try {
|
|
await PushRegistration().logoutCleanup();
|
|
} on Object catch (e) {
|
|
log('Sign-out: push cleanup failed: $e');
|
|
}
|
|
await AuthLogout().run();
|
|
await SessionManager().signOut();
|
|
// A login link that arrived while signed in must not be replayed on the
|
|
// login screen that follows.
|
|
GuardianLinkListener.clear();
|
|
}
|
|
}
|