fix & opt.: prefer temperature dev

This commit is contained in:
lollipopkit
2024-04-21 01:04:43 +08:00
parent 23764f8c93
commit a0ea95b1c3
22 changed files with 152 additions and 206 deletions

View File

@@ -1,28 +1,42 @@
part of 'server.dart';
extension ServerX on Server {
String get topRightStr {
String getTopRightStr(ServerPrivateInfo spi) {
switch (state) {
case ServerState.disconnected:
return l10n.disconnected;
case ServerState.finished:
// Highest priority of temperature display
final cmdTemp = status.customCmds['server_card_top_right'];
final temp = status.temps.first;
final sensorTemp = SensorItem.findPreferTempVal(status.sensors);
final temperatureVal = () {
// Second priority
final preferTempDev = spi.custom?.preferTempDev;
if (preferTempDev != null) {
final preferTemp = status.sensors
.firstWhereOrNull(
(e) => e.device == preferTempDev,
)
?.props
.values
.firstOrNull
?.current;
if (preferTemp != null) return preferTemp;
}
// Last priority
final temp = status.temps.first;
if (temp != null) {
return temp;
}
if (sensorTemp != null) {
return sensorTemp;
}
return null;
}();
final tempVal = temperatureVal != null
? '${temperatureVal.toStringAsFixed(1)}°C'
: null;
final upTime = status.more[StatusCmdType.uptime];
final items = [tempVal ?? cmdTemp, upTime];
final items = [
cmdTemp ??
(temperatureVal != null
? '${temperatureVal.toStringAsFixed(1)}°C'
: null),
upTime
];
final str = items.where((e) => e != null && e.isNotEmpty).join(' | ');
if (str.isEmpty) return l10n.noResult;
return str;