This commit is contained in:
Artem Kokos
2026-04-14 00:02:02 +07:00
parent 1d31767ee0
commit 8198ea09ae
9 changed files with 403 additions and 4 deletions

View File

@@ -7,6 +7,7 @@ class HomeConfig {
final String apiKey; // ключ авторизации
final double? latitude; // GPS-широта дома (для гео-автоматизации)
final double? longitude; // GPS-долгота дома (для гео-автоматизации)
final bool geofenceEnabled; // автовыключение при уходе из дома
HomeConfig({
required this.id,
@@ -15,11 +16,15 @@ class HomeConfig {
required this.apiKey,
this.latitude,
this.longitude,
this.geofenceEnabled = false,
});
/// Есть ли координаты у дома
bool get hasCoordinates => latitude != null && longitude != null;
/// Готов ли геофенс к работе: включён + координаты заданы
bool get geofenceReady => geofenceEnabled && hasCoordinates;
/// Сериализация в JSON для хранения в SharedPreferences
Map<String, dynamic> toJson() => {
'id': id,
@@ -28,6 +33,7 @@ class HomeConfig {
'apiKey': apiKey,
if (latitude != null) 'latitude': latitude,
if (longitude != null) 'longitude': longitude,
'geofenceEnabled': geofenceEnabled,
};
factory HomeConfig.fromJson(Map<String, dynamic> json) => HomeConfig(
@@ -37,6 +43,7 @@ class HomeConfig {
apiKey: json['apiKey'] as String,
latitude: (json['latitude'] as num?)?.toDouble(),
longitude: (json['longitude'] as num?)?.toDouble(),
geofenceEnabled: json['geofenceEnabled'] as bool? ?? false,
);
/// Копирование с изменениями
@@ -46,6 +53,7 @@ class HomeConfig {
String? apiKey,
double? latitude,
double? longitude,
bool? geofenceEnabled,
bool clearCoordinates = false,
}) =>
HomeConfig(
@@ -55,5 +63,9 @@ class HomeConfig {
apiKey: apiKey ?? this.apiKey,
latitude: clearCoordinates ? null : (latitude ?? this.latitude),
longitude: clearCoordinates ? null : (longitude ?? this.longitude),
// Если очищаем координаты -- геофенс тоже выключается
geofenceEnabled: clearCoordinates
? false
: (geofenceEnabled ?? this.geofenceEnabled),
);
}
}