import 'dart:async';
import 'package:common/services/msal_service.dart';
import 'package:comwell_key_app/database/comwell_db.dart';
import 'package:comwell_key_app/tracking/comwell_tracking.dart';
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:msal_auth/msal_auth.dart';
import '../utils/seos_repository.dart';
class AuthenticationRepository {
final SeosRepository _seosRepository;
final ComwellDatabase _database;
final ComwellTracking _comwellTracking;
final MSALService _msalService;
AuthenticationRepository(
this._seosRepository,
this._database,
this._comwellTracking,
this._msalService,
) {
FirebaseAnalytics.instance.setUserProperty(
name: 'login_status',
value: 'false',
);
}
bool get isLoggedIn => _msalService.isLoggedIn;
Future<void> logOut() async {
try {
await _msalService.logout();
_comwellTracking.trackEvent('logout');
await _seosRepository.terminateEndpoint();
await _database.deleteDatabase();
await secureStorage.deleteAll();
await FirebaseAnalytics.instance.setUserProperty(
name: 'login_status',
value: 'false',
);
} catch (e) {
// no op
}
}
Future<void> openAuth(Prompt prompt) async {
await _msalService.openAuth(prompt);
await FirebaseAnalytics.instance.logLogin();
await FirebaseAnalytics.instance.setUserProperty(
name: 'login_status',
value: 'true',
);
}
Future<String> getAccessToken() async {
return await _msalService.acquireTokenSilent();
}
}