String? normalizeOptionalString(String? value) { if (value == null) return null; final trimmed = value.trim(); if (trimmed.isEmpty) return null; if (trimmed.toLowerCase() == 'null') return null; return trimmed; } final RegExp _windowsAbsolutePathPattern = RegExp(r'^[A-Za-z]:[\\/]'); bool _looksLikeLocalReference(String value) { return value.startsWith('/') || value.startsWith('content://') || value.startsWith('file://') || _windowsAbsolutePathPattern.hasMatch(value); } String? normalizeCoverReference(String? value) { final normalized = normalizeOptionalString(value); if (normalized == null) return null; if (normalized.startsWith('//')) { return 'https:$normalized'; } if (normalized.startsWith('http://') || normalized.startsWith('https://') || _looksLikeLocalReference(normalized)) { return normalized; } return null; } String? normalizeRemoteHttpUrl(String? value) { final normalized = normalizeCoverReference(value); if (normalized == null) return null; if (normalized.startsWith('http://') || normalized.startsWith('https://')) { return normalized; } return null; } String formatSampleRateKHz(int sampleRate) { final khz = sampleRate / 1000; final precision = sampleRate % 1000 == 0 ? 0 : 1; return '${khz.toStringAsFixed(precision)}kHz'; } String? buildDisplayAudioQuality({ int? bitDepth, int? sampleRate, int? bitrateKbps, String? format, String? storedQuality, }) { if (bitrateKbps != null && bitrateKbps > 0) { final normalizedFormat = normalizeOptionalString(format)?.toUpperCase(); return normalizedFormat != null ? '$normalizedFormat ${bitrateKbps}kbps' : '${bitrateKbps}kbps'; } if (bitDepth != null && bitDepth > 0 && sampleRate != null && sampleRate > 0) { return '$bitDepth-bit/${formatSampleRateKHz(sampleRate)}'; } return normalizeOptionalString(storedQuality); } bool isPlaceholderQualityLabel(String? quality) { final normalized = normalizeOptionalString(quality)?.toLowerCase(); if (normalized == null) return false; return const { 'best', 'lossless', 'hi-res', 'hi-res-max', 'high', 'cd', }.contains(normalized); }