9c4e275ff7
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
70 lines
2.1 KiB
Dart
70 lines
2.1 KiB
Dart
class AppSettings {
|
|
static const double kDefaultRentUsd = 2350;
|
|
|
|
AppSettings({
|
|
required this.rentUsd,
|
|
required this.occupied,
|
|
this.notOccupiedFromYearMonth,
|
|
this.notOccupiedMonths = const <String>[],
|
|
this.localFallbackHour = 9,
|
|
this.localQuietHourStart = 23,
|
|
});
|
|
|
|
final double rentUsd;
|
|
final bool occupied;
|
|
final String? notOccupiedFromYearMonth;
|
|
final List<String> notOccupiedMonths;
|
|
final int localFallbackHour;
|
|
final int localQuietHourStart;
|
|
|
|
factory AppSettings.defaults() {
|
|
return AppSettings(rentUsd: kDefaultRentUsd, occupied: true);
|
|
}
|
|
|
|
AppSettings copyWith({
|
|
double? rentUsd,
|
|
bool? occupied,
|
|
String? notOccupiedFromYearMonth,
|
|
List<String>? notOccupiedMonths,
|
|
bool clearNotOccupiedFromYearMonth = false,
|
|
int? localFallbackHour,
|
|
int? localQuietHourStart,
|
|
}) {
|
|
return AppSettings(
|
|
rentUsd: rentUsd ?? this.rentUsd,
|
|
occupied: occupied ?? this.occupied,
|
|
notOccupiedFromYearMonth: clearNotOccupiedFromYearMonth
|
|
? null
|
|
: (notOccupiedFromYearMonth ?? this.notOccupiedFromYearMonth),
|
|
notOccupiedMonths: notOccupiedMonths ?? this.notOccupiedMonths,
|
|
localFallbackHour: localFallbackHour ?? this.localFallbackHour,
|
|
localQuietHourStart: localQuietHourStart ?? this.localQuietHourStart,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'rentUsd': rentUsd,
|
|
'occupied': occupied,
|
|
'notOccupiedFromYearMonth': notOccupiedFromYearMonth,
|
|
'notOccupiedMonths': notOccupiedMonths,
|
|
'localFallbackHour': localFallbackHour,
|
|
'localQuietHourStart': localQuietHourStart,
|
|
};
|
|
}
|
|
|
|
factory AppSettings.fromJson(Map<String, dynamic> json) {
|
|
return AppSettings(
|
|
rentUsd: (json['rentUsd'] ?? 0).toDouble(),
|
|
occupied: json['occupied'] ?? true,
|
|
notOccupiedFromYearMonth: json['notOccupiedFromYearMonth'] as String?,
|
|
notOccupiedMonths:
|
|
(json['notOccupiedMonths'] as List<dynamic>? ?? const <dynamic>[])
|
|
.whereType<String>()
|
|
.toList(),
|
|
localFallbackHour: json['localFallbackHour'] ?? 9,
|
|
localQuietHourStart: json['localQuietHourStart'] ?? 23,
|
|
);
|
|
}
|
|
}
|