From eb07f50d3dae2aeaac3966fe025b8db34f77e399 Mon Sep 17 00:00:00 2001 From: Francesco <100066266+cranci1@users.noreply.github.com> Date: Tue, 3 Jun 2025 20:08:57 +0200 Subject: [PATCH] =?UTF-8?q?changed=20my=20mind=20=F0=9F=98=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettingsSubViews/SettingsViewLogger.swift | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewLogger.swift b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewLogger.swift index e0d32ee..4a70dc4 100644 --- a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewLogger.swift +++ b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewLogger.swift @@ -62,8 +62,18 @@ fileprivate struct SettingsSection: View { struct SettingsViewLogger: View { @State private var logs: String = "" @State private var isLoading: Bool = true + @State private var showFullLogs: Bool = false @StateObject private var filterViewModel = LogFilterViewModel.shared + private let displayCharacterLimit = 50_000 + + var displayedLogs: String { + if showFullLogs || logs.count <= displayCharacterLimit { + return logs + } + return String(logs.suffix(displayCharacterLimit)) + } + var body: some View { ScrollView { VStack(spacing: 24) { @@ -79,13 +89,26 @@ struct SettingsViewLogger: View { .frame(maxWidth: .infinity, alignment: .center) .padding(.vertical, 20) } else { - Text(logs) - .font(.footnote) - .foregroundColor(.secondary) - .frame(maxWidth: .infinity, alignment: .leading) - .padding(.horizontal, 16) - .padding(.vertical, 12) - .textSelection(.enabled) + VStack(alignment: .leading, spacing: 8) { + Text(displayedLogs) + .font(.footnote) + .foregroundColor(.secondary) + .frame(maxWidth: .infinity, alignment: .leading) + .textSelection(.enabled) + + if logs.count > displayCharacterLimit && !showFullLogs { + Button(action: { + showFullLogs = true + }) { + Text("Show More (\(logs.count - displayCharacterLimit) more characters)") + .font(.footnote) + .foregroundColor(.accentColor) + } + .padding(.top, 8) + } + } + .padding(.horizontal, 16) + .padding(.vertical, 12) } } } @@ -139,6 +162,7 @@ struct SettingsViewLogger: View { await Logger.shared.clearLogsAsync() await MainActor.run { self.logs = "" + self.showFullLogs = false } } }