Eine Quelle, zwei Arten -- Sender und Titel gehen denselben Weg
Der ganze Unterschied ist einer: ein Sender endet nie, ein Titel schon. Also verzweigt genau eine Abspielfunktion und genau ein Idle-Melder nach der Art der Quelle, statt dass ein zweiter Pfad daneben entsteht -- zwei Pfade, die dasselbe tun sollen, driften auseinander. Beim Sender heisst Idle "die Leitung ist weg" (neu aufbauen), bei YouTube "fertig, der naechste bitte". Danach: Warteschlange, sonst der Sender von vorher, sonst raus. Das Radio ist die Grundstellung, YouTube die Unterbrechung. Bremse gegen das Durchrutschen: ein Eintrag ohne Ton geht sofort wieder auf Idle. Ohne Zaehlung waere eine Liste mit einem kaputten Eintrag in Sekundenbruchteilen leer, und niemand haette gesehen warum. Nach drei Fehlschlaegen in Folge wird angehalten und der Grund gemeldet. Von Hand Uebersprungenes zaehlt nicht mit. Zwei Fehler nebenbei, beide vorher schon da: Der Idle-Melder hielt `kanal` aus dem Abschluss des ERSTEN Aufrufs fest. Nach einem Kanalwechsel haette der Wiederanlauf in den alten Kanal gespielt. Er liest den Kanal jetzt frisch aus `laufend`. `radioLautstaerke()` gab bei unbelegter Einstellung 10 zurueck statt der 50, die der Kommentar zwei Zeilen darueber als Vorgabe begruendet: `Number(null)` ist 0 und damit endlich, die Pruefung auf "nicht endlich" hat den unbelegten Fall nie erwischt und auf die Untergrenze geklemmt. Eine frische Installation startete also sehr leise. Gemessen gegen eine leere Datenbank, mit Gegenproben fuer leeren String, Unsinn, 0 und 999.
This commit is contained in:
+12
-3
@@ -380,9 +380,18 @@ export const LAUT_SCHRITT = 10;
|
||||
export const LAUT_VORGABE = 50;
|
||||
|
||||
export function radioLautstaerke() {
|
||||
const roh = Number(getSetting('radio_lautstaerke'));
|
||||
if (!Number.isFinite(roh)) return LAUT_VORGABE;
|
||||
return Math.min(LAUT_MAX, Math.max(LAUT_MIN, Math.round(roh)));
|
||||
const roh = getSetting('radio_lautstaerke');
|
||||
// Der unbelegte Fall muss VOR der Umwandlung abgefangen werden.
|
||||
//
|
||||
// `Number(null)` ist 0, und 0 ist endlich — die Prüfung unten hat „noch
|
||||
// nie eingestellt" deshalb nie erwischt, sondern auf LAUT_MIN geklemmt.
|
||||
// Ergebnis: eine frische Installation startete mit 10 % statt mit den 50,
|
||||
// die zwei Zeilen weiter oben als Vorgabe begründet werden. Gemessen am
|
||||
// 28.08.2026 gegen eine leere Datenbank.
|
||||
if (roh === null || roh === undefined || roh === '') return LAUT_VORGABE;
|
||||
const wert = Number(roh);
|
||||
if (!Number.isFinite(wert)) return LAUT_VORGABE;
|
||||
return Math.min(LAUT_MAX, Math.max(LAUT_MIN, Math.round(wert)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user