new project stable version
This commit is contained in:
15
lib/data/service/app_setting_service.dart
Normal file
15
lib/data/service/app_setting_service.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class AppSettingsService {
|
||||
final SharedPreferences sharedPreferences;
|
||||
|
||||
AppSettingsService(this.sharedPreferences);
|
||||
|
||||
Future<void> saveMapSettingsFlag(String key, bool value) async {
|
||||
sharedPreferences.setBool(key, value);
|
||||
}
|
||||
|
||||
bool getMapSettingsFlag(String key) {
|
||||
return sharedPreferences.getBool(key) ?? false;
|
||||
}
|
||||
}
|
||||
43
lib/data/service/device_info_service_impl.dart
Normal file
43
lib/data/service/device_info_service_impl.dart
Normal file
@@ -0,0 +1,43 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:android_id/android_id.dart';
|
||||
import 'package:device_info_plus/device_info_plus.dart';
|
||||
|
||||
import '../../domain/service/device_info_service.dart';
|
||||
|
||||
class DeviceInfoServiceImpl extends DeviceInfoService {
|
||||
final DeviceInfoPlugin _deviceInfo = DeviceInfoPlugin();
|
||||
final AndroidId _androidId = const AndroidId();
|
||||
|
||||
@override
|
||||
Future<String> getDeviceModel() async {
|
||||
try {
|
||||
if (Platform.isAndroid) {
|
||||
final androidInfo = await _deviceInfo.androidInfo;
|
||||
return '${androidInfo.manufacturer} ${androidInfo.model}';
|
||||
} else if (Platform.isIOS) {
|
||||
final iosInfo = await _deviceInfo.iosInfo;
|
||||
return iosInfo.utsname.machine;
|
||||
}
|
||||
} catch (e) {
|
||||
print("ERROR: $e");
|
||||
}
|
||||
return 'Unknown';
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String?> getSystemId() async {
|
||||
try {
|
||||
if (Platform.isAndroid) {
|
||||
return await _androidId.getId();
|
||||
} else if (Platform.isIOS) {
|
||||
final iosInfo = await _deviceInfo.iosInfo;
|
||||
return iosInfo.identifierForVendor;
|
||||
}
|
||||
} catch (e) {
|
||||
print("ERROR: $e");
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
36
lib/data/service/news_api_service.dart
Normal file
36
lib/data/service/news_api_service.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
import 'dart:developer' as dev;
|
||||
import '../network/api_service.dart';
|
||||
|
||||
class NewsApiService {
|
||||
final ApiService _apiService;
|
||||
|
||||
NewsApiService(this._apiService);
|
||||
|
||||
Future<Map<String, dynamic>> getNews() async {
|
||||
try {
|
||||
dev.log('NewsApiService: Запрос GET /news');
|
||||
|
||||
final response = await _apiService.getNews();
|
||||
|
||||
dev.log('NewsApiService: Успешно получено ${response['data']?.length ?? 0} новостей');
|
||||
return response;
|
||||
} catch (e, stackTrace) {
|
||||
dev.log('NewsApiService: Ошибка: $e', stackTrace: stackTrace);
|
||||
throw Exception('Не удалось загрузить новости: $e');
|
||||
}
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getNewsById(int newsId) async {
|
||||
try {
|
||||
dev.log('NewsApiService: Запрос GET /news/$newsId');
|
||||
|
||||
final response = await _apiService.getNewsById(newsId);
|
||||
|
||||
dev.log('NewsApiService: Успешно получена новость с ID: $newsId');
|
||||
return response!;
|
||||
} catch (e, stackTrace) {
|
||||
dev.log('NewsApiService: Ошибка: $e', stackTrace: stackTrace);
|
||||
throw Exception('Не удалось загрузить новость: $e');
|
||||
}
|
||||
}
|
||||
}
|
||||
80
lib/data/service/security_service_impl.dart
Normal file
80
lib/data/service/security_service_impl.dart
Normal file
@@ -0,0 +1,80 @@
|
||||
import 'package:be_happy/domain/entities/user_auth_data.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
|
||||
import '../../domain/service/security_service.dart';
|
||||
|
||||
class SecurityServiceImpl extends SecurityService {
|
||||
static const String kAccessToken = "access_token";
|
||||
static const String kRefreshToken = "refresh_token";
|
||||
static const String kCardNumberPrefix = "card_number_";
|
||||
|
||||
final FlutterSecureStorage _secureStorage;
|
||||
|
||||
SecurityServiceImpl(this._secureStorage);
|
||||
|
||||
@override
|
||||
Future<void> saveTokens(UserAuthData data) async {
|
||||
await _secureStorage.write(key: kAccessToken, value: data.accessToken);
|
||||
await _secureStorage.write(key: kRefreshToken, value: data.refreshToken);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeTokens() async {
|
||||
await _secureStorage.delete(key: kRefreshToken);
|
||||
await _secureStorage.delete(key: kAccessToken);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String?> getAccessToken() async {
|
||||
return await _secureStorage.read(key: kAccessToken);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String?> getRefreshToken() async {
|
||||
return await _secureStorage.read(key: kRefreshToken);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> saveCardFullNumber(int cardId, String fullCardNumber) async {
|
||||
await _secureStorage.write(
|
||||
key: '${kCardNumberPrefix}_$cardId',
|
||||
value: fullCardNumber,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String?> getCardFullNumber(int cardId) async {
|
||||
return await _secureStorage.read(key: '${kCardNumberPrefix}_$cardId');
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeCardFullNumber(int cardId) async {
|
||||
await _secureStorage.delete(key: '${kCardNumberPrefix}_$cardId');
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> clearAllCardsNumbers() async {
|
||||
// Получаем все ключи и удаляем те, что начинаются с префикса карты
|
||||
final allKeys = await _secureStorage.readAll();
|
||||
for (final key in allKeys.keys) {
|
||||
if (key.startsWith(kCardNumberPrefix)) {
|
||||
await _secureStorage.delete(key: key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// @override
|
||||
// Future<UserAuthData?> getTokens() async {
|
||||
// final accessToken = await _secureStorage.read(key: kAccessToken);
|
||||
// final refreshToken = await _secureStorage.read(key: kRefreshToken);
|
||||
//
|
||||
// if(accessToken != null && refreshToken != null) {
|
||||
// return UserAuthData(
|
||||
// accessToken: accessToken,
|
||||
// refreshToken: refreshToken,
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user