app mobile allarmi prima

This commit is contained in:
2025-10-20 19:17:45 +02:00
commit 300912ee02
159 changed files with 11755 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';
import '../models/user.dart';
import '../utils/constants.dart';
import 'api_service.dart';
class AuthService {
static final AuthService _instance = AuthService._internal();
factory AuthService() => _instance;
AuthService._internal();
final _storage = const FlutterSecureStorage();
final _apiService = ApiService();
User? _currentUser;
User? get currentUser => _currentUser;
bool get isAuthenticated => _currentUser != null;
Future<bool> login(String email, String password) async {
try {
final response = await _apiService.login(email, password);
final token = response['access_token'] as String;
await _storage.write(key: AppConstants.storageKeyToken, value: token);
_apiService.setAuthToken(token);
_currentUser = await _apiService.getCurrentUser();
final prefs = await SharedPreferences.getInstance();
await prefs.setString(
AppConstants.storageKeyUser,
json.encode(_currentUser!.toJson()),
);
return true;
} catch (e) {
print('Login error: $e');
return false;
}
}
Future<bool> autoLogin() async {
try {
final token = await _storage.read(key: AppConstants.storageKeyToken);
if (token == null) return false;
_apiService.setAuthToken(token);
_currentUser = await _apiService.getCurrentUser();
return true;
} catch (e) {
print('Auto login error: $e');
await logout();
return false;
}
}
Future<void> logout() async {
_currentUser = null;
_apiService.clearAuthToken();
await _storage.delete(key: AppConstants.storageKeyToken);
final prefs = await SharedPreferences.getInstance();
await prefs.remove(AppConstants.storageKeyUser);
await prefs.remove(AppConstants.storageKeyFcmToken);
}
Future<void> saveFcmToken(String fcmToken) async {
try {
await _apiService.registerFcmToken(fcmToken);
final prefs = await SharedPreferences.getInstance();
await prefs.setString(AppConstants.storageKeyFcmToken, fcmToken);
} catch (e) {
print('Error saving FCM token: $e');
}
}
}