Initial commit

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-19 20:29:22 +01:00
commit f050d10a1d
137 changed files with 5877 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
class AppSettings {
AppSettings({
required this.rentUsd,
required this.occupied,
this.notOccupiedFromYearMonth,
this.localFallbackHour = 9,
this.localQuietHourStart = 23,
});
final double rentUsd;
final bool occupied;
final String? notOccupiedFromYearMonth;
final int localFallbackHour;
final int localQuietHourStart;
factory AppSettings.defaults() {
return AppSettings(rentUsd: 0, occupied: true);
}
AppSettings copyWith({
double? rentUsd,
bool? occupied,
String? notOccupiedFromYearMonth,
bool clearNotOccupiedFromYearMonth = false,
int? localFallbackHour,
int? localQuietHourStart,
}) {
return AppSettings(
rentUsd: rentUsd ?? this.rentUsd,
occupied: occupied ?? this.occupied,
notOccupiedFromYearMonth: clearNotOccupiedFromYearMonth
? null
: (notOccupiedFromYearMonth ?? this.notOccupiedFromYearMonth),
localFallbackHour: localFallbackHour ?? this.localFallbackHour,
localQuietHourStart: localQuietHourStart ?? this.localQuietHourStart,
);
}
Map<String, dynamic> toJson() {
return {
'rentUsd': rentUsd,
'occupied': occupied,
'notOccupiedFromYearMonth': notOccupiedFromYearMonth,
'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?,
localFallbackHour: json['localFallbackHour'] ?? 9,
localQuietHourStart: json['localQuietHourStart'] ?? 23,
);
}
}