Merge pull request #516 from Nohan-V2/main

Handle NaN in numeric settings parsing
This commit is contained in:
Samidy 2026-04-06 19:36:13 +03:00 committed by GitHub
commit 3d36093abb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 5 deletions

View file

@ -1137,7 +1137,8 @@ export async function initializeSettings(scrobbler, player, api, ui) {
if (replayGainPreamp) { if (replayGainPreamp) {
replayGainPreamp.value = replayGainSettings.getPreamp(); replayGainPreamp.value = replayGainSettings.getPreamp();
replayGainPreamp.addEventListener('change', (e) => { replayGainPreamp.addEventListener('change', (e) => {
replayGainSettings.setPreamp(parseFloat(e.target.value) || 3); const val = parseFloat(e.target.value);
replayGainSettings.setPreamp(isNaN(val) ? 3 : val);
player.applyReplayGain(); player.applyReplayGain();
}); });
} }
@ -1174,7 +1175,8 @@ export async function initializeSettings(scrobbler, player, api, ui) {
if (playbackSpeedSlider && playbackSpeedInput) { if (playbackSpeedSlider && playbackSpeedInput) {
// Helper function to update both controls // Helper function to update both controls
const updatePlaybackSpeedControls = (speed) => { const updatePlaybackSpeedControls = (speed) => {
const validSpeed = Math.max(0.01, Math.min(100, parseFloat(speed) || 1.0)); const parsedSpeed = parseFloat(speed);
const validSpeed = Math.max(0.01, Math.min(100, isNaN(parsedSpeed) ? 1.0 : parsedSpeed));
playbackSpeedInput.value = validSpeed; playbackSpeedInput.value = validSpeed;
// Only update slider if value is within slider range // Only update slider if value is within slider range
if (validSpeed >= 0.25 && validSpeed <= 4.0) { if (validSpeed >= 0.25 && validSpeed <= 4.0) {

View file

@ -442,7 +442,8 @@ export const lastFMStorage = {
}, },
setScrobblePercentage(percentage) { setScrobblePercentage(percentage) {
const validPercentage = Math.max(1, Math.min(100, parseInt(percentage, 10) || 75)); const parsed = parseInt(percentage, 10);
const validPercentage = Math.max(1, Math.min(100, isNaN(parsed) ? 75 : parsed));
localStorage.setItem(this.SCROBBLE_PERCENTAGE_KEY, validPercentage.toString()); localStorage.setItem(this.SCROBBLE_PERCENTAGE_KEY, validPercentage.toString());
}, },
@ -1123,9 +1124,10 @@ export const equalizerSettings = {
}, },
setBandCount(count) { setBandCount(count) {
const parsedCount = parseInt(count, 10);
const validCount = Math.max( const validCount = Math.max(
this.MIN_BANDS, this.MIN_BANDS,
Math.min(this.MAX_BANDS, parseInt(count, 10) || this.DEFAULT_BAND_COUNT) Math.min(this.MAX_BANDS, isNaN(parsedCount) ? this.DEFAULT_BAND_COUNT : parsedCount)
); );
localStorage.setItem(this.BAND_COUNT_KEY, validCount.toString()); localStorage.setItem(this.BAND_COUNT_KEY, validCount.toString());
}, },
@ -2451,7 +2453,8 @@ export const fontSettings = {
}, },
setFontSize(size) { setFontSize(size) {
const validSize = Math.max(50, Math.min(200, parseInt(size, 10) || 100)); const parsed = parseInt(size, 10);
const validSize = Math.max(50, Math.min(200, isNaN(parsed) ? 100 : parsed));
localStorage.setItem(this.FONT_SIZE_KEY, validSize.toString()); localStorage.setItem(this.FONT_SIZE_KEY, validSize.toString());
this.applyFontSize(); this.applyFontSize();
return validSize; return validSize;