diff --git a/Demo/Sources/iOS/Pulse_Demo_iOSApp.swift b/Demo/Sources/iOS/Pulse_Demo_iOSApp.swift index 95e7afd01..8b473e815 100644 --- a/Demo/Sources/iOS/Pulse_Demo_iOSApp.swift +++ b/Demo/Sources/iOS/Pulse_Demo_iOSApp.swift @@ -25,6 +25,13 @@ private final class AppViewModel: ObservableObject { init() { // This code registers the store with the `RemoteLogger` (important!) LoggerStore.shared = .demo + + /* + //Disable: options -> 1. "Settings", "Get Pulse Pro", "Report Issue" + UserDefaults.standard.set(true, forKey: "pulse-disable-support-prompts") + UserDefaults.standard.set(true, forKey: "pulse-disable-report-issue-prompts") + UserDefaults.standard.set(true, forKey: "pulse-disable-settings-prompts") + */ // RemoteLogger.shared.isAutomaticConnectionEnabled = true diff --git a/Sources/Pulse/Helpers/Helpers.swift b/Sources/Pulse/Helpers/Helpers.swift index d961d107e..c262add0b 100644 --- a/Sources/Pulse/Helpers/Helpers.swift +++ b/Sources/Pulse/Helpers/Helpers.swift @@ -88,6 +88,7 @@ extension URLRequest { var bodyStreamData = Data() while bodyStream.hasBytesAvailable { let readData = bodyStream.read(buffer, maxLength: bufferSize) + guard readData != -1 else { return nil } // read failed bodyStreamData.append(buffer, count: readData) } return bodyStreamData diff --git a/Sources/Pulse/NetworkLogger/NetworkLogger.swift b/Sources/Pulse/NetworkLogger/NetworkLogger.swift index 91c423cf4..a37a80d55 100644 --- a/Sources/Pulse/NetworkLogger/NetworkLogger.swift +++ b/Sources/Pulse/NetworkLogger/NetworkLogger.swift @@ -2,6 +2,7 @@ // // Copyright (c) 2020-2024 Alexander Grebenyuk (github.com/kean). +import AVFoundation import Foundation /// A wrapper on top of ``LoggerStore`` that simplifies logging of network requests. @@ -167,6 +168,9 @@ public final class NetworkLogger: @unchecked Sendable { let context = context(for: task) lock.unlock() +#if !os(tvOS) && !os(watchOS) + guard !task.isKind(of: AVAssetDownloadTask.self) else { return } +#endif guard let originalRequest = task.originalRequest else { return } send(.networkTaskCreated(LoggerStore.Event.NetworkTaskCreated( taskId: context.taskId, diff --git a/Sources/PulseUI/Features/Console/Views/ConsoleContextMenu.swift b/Sources/PulseUI/Features/Console/Views/ConsoleContextMenu.swift index e39343ba5..e9bab75a3 100644 --- a/Sources/PulseUI/Features/Console/Views/ConsoleContextMenu.swift +++ b/Sources/PulseUI/Features/Console/Views/ConsoleContextMenu.swift @@ -25,9 +25,12 @@ struct ConsoleContextMenu: View { ConsoleSortByMenu() } Section { - Button(action: { router.isShowingSettings = true }) { - Label("Settings", systemImage: "gear") + if !UserDefaults.standard.bool(forKey: "pulse-disable-settings-prompts") { + Button(action: { router.isShowingSettings = true }) { + Label("Settings", systemImage: "gear") + } } + if !environment.store.options.contains(.readonly) { Button(role: .destructive, action: environment.removeAllLogs) { Label("Remove Logs", systemImage: "trash") @@ -40,8 +43,10 @@ struct ConsoleContextMenu: View { Label("Get Pulse Pro", systemImage: "link") } } - Button(action: buttonSendFeedbackTapped) { - Label("Report Issue", systemImage: "envelope") + if !UserDefaults.standard.bool(forKey: "pulse-disable-report-issue-prompts") { + Button(action: buttonSendFeedbackTapped) { + Label("Report Issue", systemImage: "envelope") + } } } } label: {