From eaa26f8d3697d0ef273487e9c0f7b759bdd95abb Mon Sep 17 00:00:00 2001 From: Rajiv Date: Thu, 22 Jan 2026 04:01:20 +0530 Subject: [PATCH] Fix: Prevent '[]' from displaying when no lyrics are available --- DynamicIsland/managers/MusicManager.swift | 25 +++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/DynamicIsland/managers/MusicManager.swift b/DynamicIsland/managers/MusicManager.swift index 0ec3e48..c9c3fd9 100644 --- a/DynamicIsland/managers/MusicManager.swift +++ b/DynamicIsland/managers/MusicManager.swift @@ -708,14 +708,27 @@ class MusicManager: ObservableObject { } } else { // Fallback: try to decode as UTF8 and handle as LRC or plain text - if let lrcString = String(data: data, encoding: .utf8), !lrcString.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { - // If it contains a syncedLyrics key in an object, try that - if let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any], - let synced = json["syncedLyrics"] as? String { - return parseLRC(synced) + if let lrcString = String(data: data, encoding: .utf8) { + let trimmed = lrcString.trimmingCharacters(in: .whitespacesAndNewlines) + + if trimmed.isEmpty { + return [] } + + // If it contains a syncedLyrics key in an object, try that + if let json = try? JSONSerialization.jsonObject(with: data, options: []) { + if let dict = json as? [String: Any], + let synced = dict["syncedLyrics"] as? String + { + return parseLRC(synced) + } + if let array = json as? [Any], array.isEmpty { + return [] + } + } + // Otherwise treat as plain lyrics blob - return [LyricLine(timestamp: 0, text: lrcString.trimmingCharacters(in: .whitespacesAndNewlines))] + return [LyricLine(timestamp: 0, text: trimmed)] } return [] }