From 973a1f248c13022649a1c04fb881d864d412c746 Mon Sep 17 00:00:00 2001 From: kean Date: Sun, 14 Jul 2024 15:55:18 -0400 Subject: [PATCH] Run swiftlint --fix --- .../Pulse/Helpers/CoreData+Extensions.swift | 2 +- Sources/Pulse/Helpers/Regex.swift | 4 -- .../LoggerStore+Configuration.swift | 2 +- .../Pulse/LoggerStore/LoggerStore+Event.swift | 4 +- .../Pulse/LoggerStore/LoggerStore+Info.swift | 4 +- .../Pulse/LoggerStore/LoggerStore+Model.swift | 2 +- Sources/Pulse/LoggerStore/LoggerStore.swift | 2 +- .../NetworkLogger+Entities.swift | 10 ++-- .../URLSessionProxyDelegate.swift | 2 +- .../RemoteLogger-Connection.swift | 18 +++---- .../RemoteLogger/RemoteLogger-Protocol.swift | 48 ++++++++----------- Sources/Pulse/RemoteLogger/RemoteLogger.swift | 13 +++-- .../Extensions/SwiftUI+Extensions.swift | 2 +- .../Console/ConsoleConfiguration.swift | 4 +- .../Features/Console/ConsoleDataSource.swift | 8 ++-- .../Features/Console/ConsoleView-ios.swift | 1 - .../Features/Console/ConsoleView-tvos.swift | 2 +- .../Console/ConsoleView-watchos.swift | 2 +- .../Console/Views/ConsoleContextMenu.swift | 1 - .../Console/Views/ConsoleRouterView.swift | 2 +- .../RichTextViewSearchToobar-ios.swift | 2 +- .../Filters/ConsoleFilterViewModel.swift | 2 +- .../ConsoleSearchCriteria+Predicates.swift | 6 +-- .../Views/ConsoleDomainsSelectionView.swift | 2 +- .../Filters/Views/ConsoleSection.swift | 2 +- .../ConsoleMessageMetadataView.swift | 2 +- .../RemoteLoggerSelectedDeviceView.swift | 2 +- .../Features/Sessions/SessionListView.swift | 2 +- .../Features/Sessions/SessionsView.swift | 2 +- .../Settings/SettingsView-macos.swift | 3 +- .../Settings/SettingsView-watchos.swift | 4 +- Sources/PulseUI/Helpers/HARDocument.swift | 48 +++++++++---------- Sources/PulseUI/Helpers/Regex.swift | 4 -- Sources/PulseUI/Helpers/ShareItems.swift | 2 +- Sources/PulseUI/Helpers/ShareStoreTask.swift | 3 +- Sources/PulseUI/Helpers/TextRenderer.swift | 12 ++--- .../PulseUI/Helpers/TextRendererHTML.swift | 2 +- Sources/PulseUI/Helpers/TextUtilities.swift | 6 +-- Sources/PulseUI/Helpers/UXKit.swift | 3 +- Sources/PulseUI/Helpers/Version.swift | 2 +- .../WatchConnectivityService-watchOS.swift | 2 +- Sources/PulseUI/Mocks/MockStore.swift | 12 ++--- Sources/PulseUI/Mocks/MockTask.swift | 11 ++--- Sources/PulseUI/Views/ContextMenus.swift | 6 +-- .../Views/KeyValueSectionViewModel.swift | 1 - .../Metrics/NetworkInspectorMetricsView.swift | 1 - .../NetworkInspectorTransactionView.swift | 4 +- .../Metrics/TimingViewModel+Metrics.swift | 2 +- Sources/PulseUI/Views/PlaceholderView.swift | 6 +-- .../PulseUI/Views/ShareStoreViewModel.swift | 4 +- Sources/PulseUI/Views/SpinnerView.swift | 2 +- Sources/PulseUI/Views/StoreDetailsView.swift | 2 +- 52 files changed, 136 insertions(+), 161 deletions(-) diff --git a/Sources/Pulse/Helpers/CoreData+Extensions.swift b/Sources/Pulse/Helpers/CoreData+Extensions.swift index 64c07611d..8b5ca9412 100644 --- a/Sources/Pulse/Helpers/CoreData+Extensions.swift +++ b/Sources/Pulse/Helpers/CoreData+Extensions.swift @@ -11,7 +11,7 @@ extension NSManagedObjectContext { return try fetch(request) } - func fetch(_ entity: T.Type, sortedBy keyPath: KeyPath, ascending: Bool = true, _ configure: (NSFetchRequest) -> Void = { _ in }) throws -> [T] { + func fetch(_ entity: T.Type, sortedBy keyPath: KeyPath, ascending: Bool = true, _ configure: (NSFetchRequest) -> Void = { _ in }) throws -> [T] { try fetch(entity) { $0.sortDescriptors = [NSSortDescriptor(keyPath: keyPath, ascending: ascending)] } diff --git a/Sources/Pulse/Helpers/Regex.swift b/Sources/Pulse/Helpers/Regex.swift index 9b96e0fec..795ed5663 100644 --- a/Sources/Pulse/Helpers/Regex.swift +++ b/Sources/Pulse/Helpers/Regex.swift @@ -10,10 +10,6 @@ final class Regex { struct Options: OptionSet { let rawValue: Int - init(rawValue: Int) { - self.rawValue = rawValue - } - static let caseInsensitive = Options(rawValue: 1 << 0) static let multiline = Options(rawValue: 1 << 1) static let dotMatchesLineSeparators = Options(rawValue: 1 << 2) diff --git a/Sources/Pulse/LoggerStore/LoggerStore+Configuration.swift b/Sources/Pulse/LoggerStore/LoggerStore+Configuration.swift index 030a68bd6..17a61ad19 100644 --- a/Sources/Pulse/LoggerStore/LoggerStore+Configuration.swift +++ b/Sources/Pulse/LoggerStore/LoggerStore+Configuration.swift @@ -39,7 +39,7 @@ extension LoggerStore { /// Opens store in a readonly mode. It won't perform sweeps and will /// disallow any other modifications. public static let readonly = Options(rawValue: 1 << 3) - + /// Logs are not persistent on the device storage and new log file is created on each app session. /// Core Data is configured with container type as `NSInMemoryStoreType /// diff --git a/Sources/Pulse/LoggerStore/LoggerStore+Event.swift b/Sources/Pulse/LoggerStore/LoggerStore+Event.swift index a7bec3dc0..87a0821bb 100644 --- a/Sources/Pulse/LoggerStore/LoggerStore+Event.swift +++ b/Sources/Pulse/LoggerStore/LoggerStore+Event.swift @@ -35,7 +35,7 @@ extension LoggerStore { self.function = function self.line = line } - + init(_ entity: LoggerMessageEntity) { self.createdAt = entity.createdAt self.label = entity.label @@ -116,7 +116,7 @@ extension LoggerStore { self.label = label self.taskDescription = taskDescription } - + init(_ entity: NetworkTaskEntity) { self.taskId = entity.taskId self.taskType = NetworkLogger.TaskType(rawValue: entity.taskType) ?? .dataTask diff --git a/Sources/Pulse/LoggerStore/LoggerStore+Info.swift b/Sources/Pulse/LoggerStore/LoggerStore+Info.swift index 6882e1777..163e4f348 100644 --- a/Sources/Pulse/LoggerStore/LoggerStore+Info.swift +++ b/Sources/Pulse/LoggerStore/LoggerStore+Info.swift @@ -103,8 +103,8 @@ extension LoggerStore.Info.AppInfo { } private func getAppIcon() -> Data? { - guard let icons = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String:Any], - let primaryIcons = icons["CFBundlePrimaryIcon"] as? [String:Any], + guard let icons = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any], + let primaryIcons = icons["CFBundlePrimaryIcon"] as? [String: Any], let files = primaryIcons["CFBundleIconFiles"] as? [String], let lastIcon = files.last, let image = PlatformImage(named: lastIcon), diff --git a/Sources/Pulse/LoggerStore/LoggerStore+Model.swift b/Sources/Pulse/LoggerStore/LoggerStore+Model.swift index 3fab05b19..ea5cf0374 100644 --- a/Sources/Pulse/LoggerStore/LoggerStore+Model.swift +++ b/Sources/Pulse/LoggerStore/LoggerStore+Model.swift @@ -90,7 +90,7 @@ extension LoggerStore { response.properties = [ Attribute(name: "statusCode", type: .integer16AttributeType), - Attribute(name: "httpHeaders", type: .stringAttributeType), + Attribute(name: "httpHeaders", type: .stringAttributeType) ] progress.properties = [ diff --git a/Sources/Pulse/LoggerStore/LoggerStore.swift b/Sources/Pulse/LoggerStore/LoggerStore.swift index 7b7205b9a..0f08ccde9 100644 --- a/Sources/Pulse/LoggerStore/LoggerStore.swift +++ b/Sources/Pulse/LoggerStore/LoggerStore.swift @@ -484,7 +484,7 @@ extension LoggerStore { entity.response = event.response.map(makeResponse) entity.rawMetadata = { guard let responseBody = event.responseBody, - (responseContentType?.isImage ?? false), + responseContentType?.isImage ?? false, let metadata = Graphics.makeMetadata(from: responseBody) else { return nil } diff --git a/Sources/Pulse/NetworkLogger/NetworkLogger+Entities.swift b/Sources/Pulse/NetworkLogger/NetworkLogger+Entities.swift index d289e6e6e..59e7b1914 100644 --- a/Sources/Pulse/NetworkLogger/NetworkLogger+Entities.swift +++ b/Sources/Pulse/NetworkLogger/NetworkLogger+Entities.swift @@ -39,7 +39,7 @@ extension NetworkLogger { if request.httpShouldHandleCookies { insert(.httpShouldHandleCookies) } if request.httpShouldUsePipelining { insert(.httpShouldUsePipelining) } } - + init(_ entity: NetworkRequestEntity) { self = [] if entity.allowsCellularAccess { insert(.allowsCellularAccess) } @@ -58,7 +58,7 @@ extension NetworkLogger { self.timeout = urlRequest.timeoutInterval self.options = Options(urlRequest) } - + init(_ entity: NetworkRequestEntity) { self.url = entity.url.flatMap(URL.init) self.httpMethod = entity.httpMethod @@ -87,7 +87,7 @@ extension NetworkLogger { self.statusCode = httpResponse?.statusCode self.headers = httpResponse?.allHeaderFields as? [String: String] } - + init(_ entity: NetworkResponseEntity) { self.statusCode = Int(entity.statusCode) self.headers = entity.headers @@ -291,7 +291,7 @@ extension NetworkLogger { if metrics.isConstrained { insert(.isConstrained) } if metrics.isMultipath { insert(.isMultipath) } } - + init(_ entity: NetworkTransactionMetricsEntity) { self = [] if entity.isProxyConnection { insert(.isProxyConnection) } @@ -302,7 +302,7 @@ extension NetworkLogger { if entity.isMultipath { insert(.isMultipath) } } } - + init(_ entity: NetworkTransactionMetricsEntity) { self.request = NetworkLogger.Request(entity.request) self.response = entity.response.map(NetworkLogger.Response.init) diff --git a/Sources/Pulse/NetworkLogger/URLSessionProxyDelegate.swift b/Sources/Pulse/NetworkLogger/URLSessionProxyDelegate.swift index 5cbff7eac..3bb9b8093 100644 --- a/Sources/Pulse/NetworkLogger/URLSessionProxyDelegate.swift +++ b/Sources/Pulse/NetworkLogger/URLSessionProxyDelegate.swift @@ -29,7 +29,7 @@ public final class URLSessionProxyDelegate: NSObject, URLSessionTaskDelegate, UR #selector(URLSessionTaskDelegate.urlSession(_:task:didFinishCollecting:)), #selector(URLSessionTaskDelegate.urlSession(_:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:)), #selector(URLSessionDownloadDelegate.urlSession(_:downloadTask:didFinishDownloadingTo:)), - #selector(URLSessionDownloadDelegate.urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:)), + #selector(URLSessionDownloadDelegate.urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:)) ] if #available(iOS 16.0, tvOS 16.0, macOS 13.0, watchOS 9.0, *) { self.interceptedSelectors.insert( diff --git a/Sources/Pulse/RemoteLogger/RemoteLogger-Connection.swift b/Sources/Pulse/RemoteLogger/RemoteLogger-Connection.swift index 2d9d84941..18563aa0f 100644 --- a/Sources/Pulse/RemoteLogger/RemoteLogger-Connection.swift +++ b/Sources/Pulse/RemoteLogger/RemoteLogger-Connection.swift @@ -34,7 +34,7 @@ extension RemoteLogger { let isLogEnabled = UserDefaults.standard.bool(forKey: "com.github.kean.pulse.debug") self.log = isLogEnabled ? OSLog(subsystem: "com.github.kean.pulse", category: "RemoteLogger") : .disabled } - + func start(on queue: DispatchQueue) { connection.stateUpdateHandler = { [weak self] state in guard let self = self else { return } @@ -126,7 +126,7 @@ extension RemoteLogger { } } } - + func send(code: UInt8, data: Data) { do { let data = try encode(code: code, body: data) @@ -149,7 +149,7 @@ extension RemoteLogger { os_log("Failed to encode a packet: %{public}@", log: log, type: .error, "\(error)") } } - + func sendMessage(path: Path, entity: T, _ completion: ((Data?, Error?) -> Void)? = nil) { do { sendMessage(path: path, data: try JSONEncoder().encode(entity), completion) @@ -157,16 +157,16 @@ extension RemoteLogger { os_log("Failed to send a message: %{public}@", log: log, type: .error, "\(error)") } } - + func sendMessage(path: Path, data: Data? = nil, _ completion: ((Data?, Error?) -> Void)? = nil) { let message = Message(id: id, options: [], path: path, data: data ?? Data()) - + if id == UInt32.max { id = 0 } else { id += 1 } - + if let completion = completion { let id = message.id handlers[message.id] = completion @@ -176,7 +176,7 @@ extension RemoteLogger { } } } - + do { let data = try Message.encode(message) send(code: .message, data: data) @@ -192,7 +192,7 @@ extension RemoteLogger { os_log("Failed to encode a response: %{public}@", log: log, type: .error, "\(error)") } } - + func sendResponse(for message: Message, data: Data) { let message = Message(id: message.id, options: [.response], path: message.path, data: data) do { @@ -202,7 +202,7 @@ extension RemoteLogger { os_log("Failed to encode a response: %{public}@", log: log, type: .error, "\(error)") } } - + func cancel() { connection.cancel() } diff --git a/Sources/Pulse/RemoteLogger/RemoteLogger-Protocol.swift b/Sources/Pulse/RemoteLogger/RemoteLogger-Protocol.swift index 698a5720d..d070a0090 100644 --- a/Sources/Pulse/RemoteLogger/RemoteLogger-Protocol.swift +++ b/Sources/Pulse/RemoteLogger/RemoteLogger-Protocol.swift @@ -38,29 +38,28 @@ extension RemoteLogger { } struct Empty: Codable { - init() {} } - + struct PacketNetworkMessage { private struct Manifest: Codable { let messageSize: UInt32 let requestBodySize: UInt32 let responseBodySize: UInt32 - + static let size = 12 - + var totalSize: Int { Manifest.size + Int(messageSize) + Int(requestBodySize) + Int(responseBodySize) } } - + static func encode(_ event: LoggerStore.Event.NetworkTaskCompleted) throws -> Data { var contents = [Data]() - + var slimEvent = event slimEvent.requestBody = nil // Sent separately using binary slimEvent.responseBody = nil - + let messageData = try JSONEncoder().encode(slimEvent) contents.append(messageData) if let requestBody = event.requestBody, requestBody.count < Int32.max { @@ -69,7 +68,7 @@ extension RemoteLogger { if let responseBody = event.responseBody, responseBody.count < Int32.max { contents.append(responseBody) } - + var data = Data() data.append(Data(UInt32(messageData.count))) data.append(Data(UInt32(event.requestBody?.count ?? 0))) @@ -79,48 +78,48 @@ extension RemoteLogger { } return data } - + static func decode(_ data: Data) throws -> LoggerStore.Event.NetworkTaskCompleted { guard data.count >= Manifest.size else { throw PacketParsingError.notEnoughData // Should never happen } - + let manifest = Manifest( messageSize: UInt32(data.from(0, size: 4)), requestBodySize: UInt32(data.from(4, size: 4)), responseBodySize: UInt32(data.from(8, size: 4)) ) - + guard data.count >= manifest.totalSize else { throw PacketParsingError.notEnoughData // This should never happen } - + let event = try JSONDecoder().decode( LoggerStore.Event.NetworkTaskCompleted.self, from: data.from(Manifest.size, size: Int(manifest.messageSize)) ) - + var requestBody: Data? if manifest.requestBodySize > 0 { requestBody = data.from(Manifest.size + Int(manifest.messageSize), size: Int(manifest.requestBodySize)) } - + var responseBody: Data? if manifest.responseBodySize > 0 { responseBody = data.from(Manifest.size + Int(manifest.messageSize) + Int(manifest.requestBodySize), size: Int(manifest.responseBodySize)) } - + return LoggerStore.Event.NetworkTaskCompleted(taskId: event.taskId, taskType: event.taskType, createdAt: event.createdAt, originalRequest: event.originalRequest, currentRequest: event.currentRequest, response: event.response, error: event.error, requestBody: requestBody, responseBody: responseBody, metrics: event.metrics, label: event.label, taskDescription: event.taskDescription) } } - + struct Message { struct Header { let id: UInt32 let options: Options let pathSize: UInt32 let dataSize: UInt32 - + init?(_ data: Data) { guard data.count >= headerSize else { return nil } self.id = UInt32(data.from(0, size: 4)) @@ -129,25 +128,24 @@ extension RemoteLogger { self.dataSize = UInt32(data.from(9, size: 4)) } } - + struct Options: OptionSet { let rawValue: UInt8 - init(rawValue: UInt8) { self.rawValue = rawValue } static let response = Options(rawValue: 1 << 0) } - + let id: UInt32 let options: Options let path: Path let data: Data - + // - id (UInt32) // - options (UInt8) // - path size (UInt32) // - data size (UInt32) private static let headerSize = 13 - + static func encode(_ message: Message) throws -> Data { guard let path = try? JSONEncoder().encode(message.path) else { throw URLError(.unknown, userInfo: [:]) // Should never happen @@ -182,7 +180,7 @@ extension RemoteLogger { case notEnoughData case unsupportedContentSize } - + enum Path: Codable { case updateMocks case getMockedResponse(mockID: UUID) @@ -194,10 +192,6 @@ extension RemoteLogger { struct ServerHelloResponse: Codable { let version: String - - init(version: String) { - self.version = version - } } } diff --git a/Sources/Pulse/RemoteLogger/RemoteLogger.swift b/Sources/Pulse/RemoteLogger/RemoteLogger.swift index 90fdf7f58..07693908c 100644 --- a/Sources/Pulse/RemoteLogger/RemoteLogger.swift +++ b/Sources/Pulse/RemoteLogger/RemoteLogger.swift @@ -78,7 +78,7 @@ public final class RemoteLogger: ObservableObject, RemoteLoggerConnectionDelegat public enum ConnectionState { case disconnected, connecting, connected } - + public var isOpenOnMacSupported: Bool { guard let serverVersion = serverVersion else { return false } return serverVersion >= Version(4, 0, 0) @@ -322,7 +322,7 @@ public final class RemoteLogger: ObservableObject, RemoteLoggerConnectionDelegat openConnection(to: server, passcode: passcode) } - + private func connectionDidTimeout(isProtected: Bool) { os_log("Connection did timeout", log: log) connectionCompletion?(.failure(self.connectionError ?? .unknown(isProtected: isProtected))) @@ -406,7 +406,7 @@ public final class RemoteLogger: ObservableObject, RemoteLoggerConnectionDelegat } } - // MARK: + // MARK: /// Returns passcode for the sever with the given name. public func getPasscode(forServerNamed name: String) -> String? { @@ -655,18 +655,17 @@ public final class RemoteLogger: ObservableObject, RemoteLoggerConnectionDelegat } } } - + // MARK: Details - + public func showDetails(for message: LoggerMessageEntity) { connection?.sendMessage(path: .openMessageDetails, entity: LoggerStore.Event.MessageCreated(message)) } - + public func showDetails(for task: NetworkTaskEntity) { connection?.sendMessage(path: .openTaskDetails, entity: LoggerStore.Event.NetworkTaskCompleted(task)) } - // MARK: Persistence private func getKnownServers() -> [String] { diff --git a/Sources/PulseUI/Extensions/SwiftUI+Extensions.swift b/Sources/PulseUI/Extensions/SwiftUI+Extensions.swift index f07c891b9..d62b22ff3 100644 --- a/Sources/PulseUI/Extensions/SwiftUI+Extensions.swift +++ b/Sources/PulseUI/Extensions/SwiftUI+Extensions.swift @@ -79,7 +79,7 @@ extension Backport { func presentationDetents(_ detents: Set) -> some View { #if os(iOS) || os(visionOS) if #available(iOS 16, *) { - let detents = detents.map { (detent)-> SwiftUI.PresentationDetent in + let detents = detents.map { (detent) -> SwiftUI.PresentationDetent in switch detent { case .large: return .large case .medium: return .medium diff --git a/Sources/PulseUI/Features/Console/ConsoleConfiguration.swift b/Sources/PulseUI/Features/Console/ConsoleConfiguration.swift index 84d685d0d..83d6f666e 100644 --- a/Sources/PulseUI/Features/Console/ConsoleConfiguration.swift +++ b/Sources/PulseUI/Features/Console/ConsoleConfiguration.swift @@ -9,10 +9,10 @@ import Foundation /// Defines UI configurations to enable/disable elements or change behavior. public struct ConsoleConfiguration { public static let `default` = ConsoleConfiguration() - + let shareStoreOutputs: [ShareStoreOutput] let allowRemoteLogging: Bool - + /// Creates a new `ConsoleConfiguration` /// - Parameter shareStoreOutputs: The available store share outputs. Defaults to `allCases`. /// - Parameter allowRemoteLogging: Enable/disable the remote logging option. diff --git a/Sources/PulseUI/Features/Console/ConsoleDataSource.swift b/Sources/PulseUI/Features/Console/ConsoleDataSource.swift index 72ef69562..2d8c9a9a1 100644 --- a/Sources/PulseUI/Features/Console/ConsoleDataSource.swift +++ b/Sources/PulseUI/Features/Console/ConsoleDataSource.swift @@ -98,17 +98,17 @@ final class ConsoleDataSource: NSObject, NSFetchedResultsControllerDelegate { try? controller.performFetch() delegate?.dataSourceDidRefresh(self) } - + // MARK: Accessing Entities - + var numberOfObjects: Int { controller.fetchedObjects?.count ?? 0 } - + func object(at indexPath: IndexPath) -> NSManagedObject { controller.object(at: indexPath) } - + var entities: [NSManagedObject] { controller.fetchedObjects ?? [] } diff --git a/Sources/PulseUI/Features/Console/ConsoleView-ios.swift b/Sources/PulseUI/Features/Console/ConsoleView-ios.swift index 479935c3b..26ed3c4a1 100644 --- a/Sources/PulseUI/Features/Console/ConsoleView-ios.swift +++ b/Sources/PulseUI/Features/Console/ConsoleView-ios.swift @@ -81,4 +81,3 @@ struct ConsoleView_Previews: PreviewProvider { #endif #endif - diff --git a/Sources/PulseUI/Features/Console/ConsoleView-tvos.swift b/Sources/PulseUI/Features/Console/ConsoleView-tvos.swift index de072dfc1..6d2dd769f 100644 --- a/Sources/PulseUI/Features/Console/ConsoleView-tvos.swift +++ b/Sources/PulseUI/Features/Console/ConsoleView-tvos.swift @@ -19,7 +19,7 @@ public struct ConsoleView: View { } public var body: some View { - GeometryReader { proxy in + GeometryReader { _ in HStack { List { ConsoleListContentView() diff --git a/Sources/PulseUI/Features/Console/ConsoleView-watchos.swift b/Sources/PulseUI/Features/Console/ConsoleView-watchos.swift index 28edd5d9b..f0a005bc8 100644 --- a/Sources/PulseUI/Features/Console/ConsoleView-watchos.swift +++ b/Sources/PulseUI/Features/Console/ConsoleView-watchos.swift @@ -50,7 +50,7 @@ private struct ConsoleToolbarView: View { var body: some View { HStack { if environment.initialMode == .all { - Button(action: { environment.bindingForNetworkMode.wrappedValue.toggle() } ) { + Button(action: { environment.bindingForNetworkMode.wrappedValue.toggle() }) { Image(systemName: "arrow.down.circle") } .background(environment.bindingForNetworkMode.wrappedValue ? Rectangle().foregroundColor(.blue).cornerRadius(8) : nil) diff --git a/Sources/PulseUI/Features/Console/Views/ConsoleContextMenu.swift b/Sources/PulseUI/Features/Console/Views/ConsoleContextMenu.swift index 64a4a7616..aed87a550 100644 --- a/Sources/PulseUI/Features/Console/Views/ConsoleContextMenu.swift +++ b/Sources/PulseUI/Features/Console/Views/ConsoleContextMenu.swift @@ -96,4 +96,3 @@ private struct ConsoleSortByMenu: View { } } #endif - diff --git a/Sources/PulseUI/Features/Console/Views/ConsoleRouterView.swift b/Sources/PulseUI/Features/Console/Views/ConsoleRouterView.swift index 174fc4d0f..6d8312def 100644 --- a/Sources/PulseUI/Features/Console/Views/ConsoleRouterView.swift +++ b/Sources/PulseUI/Features/Console/Views/ConsoleRouterView.swift @@ -37,7 +37,7 @@ extension ConsoleRouterView { .sheet(isPresented: $router.isShowingShareStore) { destinationShareStore } .sheet(item: $router.shareItems, content: ShareView.init) } - + private var destinationFilters: some View { NavigationView { ConsoleFiltersView() diff --git a/Sources/PulseUI/Features/FileViewer/RichTextView/RichTextViewSearchToobar-ios.swift b/Sources/PulseUI/Features/FileViewer/RichTextView/RichTextViewSearchToobar-ios.swift index 9e6d61b01..ebb2ea077 100644 --- a/Sources/PulseUI/Features/FileViewer/RichTextView/RichTextViewSearchToobar-ios.swift +++ b/Sources/PulseUI/Features/FileViewer/RichTextView/RichTextViewSearchToobar-ios.swift @@ -20,7 +20,7 @@ struct RichTextViewSearchToobar: View { .padding(12) .background(Material.regular) .cornerRadius(8) - .onReceive(Keyboard.isHidden) { isKeyboardHidden in + .onReceive(Keyboard.isHidden) { _ in // Show a non-interactive placeholder during animation, // then show the actual menu when navigation is settled. withAnimation(nil) { diff --git a/Sources/PulseUI/Features/Filters/ConsoleFilterViewModel.swift b/Sources/PulseUI/Features/Filters/ConsoleFilterViewModel.swift index 9c2facbeb..47f5d01b7 100644 --- a/Sources/PulseUI/Features/Filters/ConsoleFilterViewModel.swift +++ b/Sources/PulseUI/Features/Filters/ConsoleFilterViewModel.swift @@ -20,7 +20,7 @@ final class ConsoleFiltersViewModel: ObservableObject { // TODO: Refactor let entities = CurrentValueSubject<[NSManagedObject], Never>([]) - + init(options: ConsoleDataSource.PredicateOptions) { self.options = options self.defaultCriteria = options.filters diff --git a/Sources/PulseUI/Features/Filters/Filters/ConsoleSearchCriteria+Predicates.swift b/Sources/PulseUI/Features/Filters/Filters/ConsoleSearchCriteria+Predicates.swift index 04fd522f7..b4da07a5c 100644 --- a/Sources/PulseUI/Features/Filters/Filters/ConsoleSearchCriteria+Predicates.swift +++ b/Sources/PulseUI/Features/Filters/Filters/ConsoleSearchCriteria+Predicates.swift @@ -57,7 +57,7 @@ private func makePredicates(for criteria: ConsoleFilters.Messages) -> [NSPredica if criteria.logLevels.levels.count != LoggerStore.Level.allCases.count { predicates.append(NSPredicate(format: "level IN %@", Array(criteria.logLevels.levels.map { $0.rawValue }))) } - + if let focusedLabel = criteria.labels.focused { predicates.append(NSPredicate(format: "label == %@", focusedLabel)) } else if !criteria.labels.hidden.isEmpty { @@ -69,13 +69,13 @@ private func makePredicates(for criteria: ConsoleFilters.Messages) -> [NSPredica private func makePredicates(for criteria: ConsoleFilters.Network) -> [NSPredicate] { var predicates = [NSPredicate]() - + if let focusedHost = criteria.host.focused { predicates.append(NSPredicate(format: "host == %@", focusedHost)) } else if !criteria.host.hidden.isEmpty { predicates.append(NSPredicate(format: "NOT host IN %@", Array(criteria.host.hidden))) } - + if let focusedURL = criteria.url.focused { predicates.append(NSPredicate(format: "url == %@", focusedURL)) } else if !criteria.url.hidden.isEmpty { diff --git a/Sources/PulseUI/Features/Filters/Views/ConsoleDomainsSelectionView.swift b/Sources/PulseUI/Features/Filters/Views/ConsoleDomainsSelectionView.swift index b9b5993e7..3b7e075b1 100644 --- a/Sources/PulseUI/Features/Filters/Views/ConsoleDomainsSelectionView.swift +++ b/Sources/PulseUI/Features/Filters/Views/ConsoleDomainsSelectionView.swift @@ -21,7 +21,7 @@ struct ConsoleDomainsSelectionView: View { label: { Text($0) } ) } -} +} private extension ConsoleFiltersViewModel { func bindingForHosts(index: LoggerStoreIndex) -> Binding> { diff --git a/Sources/PulseUI/Features/Filters/Views/ConsoleSection.swift b/Sources/PulseUI/Features/Filters/Views/ConsoleSection.swift index 8d1465ffd..1234897c7 100644 --- a/Sources/PulseUI/Features/Filters/Views/ConsoleSection.swift +++ b/Sources/PulseUI/Features/Filters/Views/ConsoleSection.swift @@ -17,7 +17,7 @@ struct ConsoleSection: View { } .padding(.horizontal, 12) .padding(.vertical, 4) - },header: { + }, header: { VStack(spacing: 0) { if !isDividerHidden { Divider() diff --git a/Sources/PulseUI/Features/MessageDetails/ConsoleMessageMetadataView.swift b/Sources/PulseUI/Features/MessageDetails/ConsoleMessageMetadataView.swift index 86db25662..fda95f5cb 100644 --- a/Sources/PulseUI/Features/MessageDetails/ConsoleMessageMetadataView.swift +++ b/Sources/PulseUI/Features/MessageDetails/ConsoleMessageMetadataView.swift @@ -32,7 +32,7 @@ struct ConsoleMessageMetadataView: View { KeyValueSectionViewModel(title: "Details", color: .primary, items: [ ("File", message.file.nonEmpty), ("Function", message.function.nonEmpty), - ("Line", message.line == 0 ? nil : "\(message.line)"), + ("Line", message.line == 0 ? nil : "\(message.line)") ]), KeyValueSectionViewModel(title: "Metadata", color: .indigo, items: metadataItems) ] diff --git a/Sources/PulseUI/Features/Remote/RemoteLoggerSelectedDeviceView.swift b/Sources/PulseUI/Features/Remote/RemoteLoggerSelectedDeviceView.swift index 89c418b84..f23a8349c 100644 --- a/Sources/PulseUI/Features/Remote/RemoteLoggerSelectedDeviceView.swift +++ b/Sources/PulseUI/Features/Remote/RemoteLoggerSelectedDeviceView.swift @@ -20,7 +20,7 @@ struct RemoteLoggerSelectedDeviceView: View { makeStatusView(for: logger.connectionState) } Spacer() - if (server?.server.isProtected ?? false) { + if server?.server.isProtected ?? false { Image(systemName: "lock.fill") .foregroundColor(.separator) } diff --git a/Sources/PulseUI/Features/Sessions/SessionListView.swift b/Sources/PulseUI/Features/Sessions/SessionListView.swift index 71fff6e70..011d1f78b 100644 --- a/Sources/PulseUI/Features/Sessions/SessionListView.swift +++ b/Sources/PulseUI/Features/Sessions/SessionListView.swift @@ -180,7 +180,7 @@ struct ConsoleSessionCell: View { .listRowBackground((editMode?.wrappedValue.isEditing ?? false) ? Color.clear : nil) #endif } - + @ViewBuilder private var details: some View { #if !os(watchOS) diff --git a/Sources/PulseUI/Features/Sessions/SessionsView.swift b/Sources/PulseUI/Features/Sessions/SessionsView.swift index dbe58b495..69c0e445e 100644 --- a/Sources/PulseUI/Features/Sessions/SessionsView.swift +++ b/Sources/PulseUI/Features/Sessions/SessionsView.swift @@ -121,7 +121,7 @@ struct SessionsView: View { router.isShowingSessions = false } #endif - + #if os(macOS) @ViewBuilder private func contextMenu(for selection: Set) -> some View { diff --git a/Sources/PulseUI/Features/Settings/SettingsView-macos.swift b/Sources/PulseUI/Features/Settings/SettingsView-macos.swift index 00567c2ea..9ec16c89e 100644 --- a/Sources/PulseUI/Features/Settings/SettingsView-macos.swift +++ b/Sources/PulseUI/Features/Settings/SettingsView-macos.swift @@ -32,7 +32,7 @@ struct SettingsView: View { } header: { PlainListSectionHeaderSeparator(title: "Store") } - + Section { HStack { Button("Show in Finder") { @@ -60,4 +60,3 @@ struct UserSettingsView_Previews: PreviewProvider { } #endif #endif - diff --git a/Sources/PulseUI/Features/Settings/SettingsView-watchos.swift b/Sources/PulseUI/Features/Settings/SettingsView-watchos.swift index 9c0f89c8d..5d1d39a74 100644 --- a/Sources/PulseUI/Features/Settings/SettingsView-watchos.swift +++ b/Sources/PulseUI/Features/Settings/SettingsView-watchos.swift @@ -40,7 +40,7 @@ public struct SettingsView: View { .alert(item: $syncService.error) { error in Alert(title: Text("Transfer Failed"), message: Text(error.error.localizedDescription), dismissButton: .cancel(Text("Ok"))) } - + if #available(watchOS 9, *) { Button("Share Store") { isShowingShareView = true } } @@ -60,7 +60,7 @@ public struct SettingsView: View { .sheet(isPresented: $isShowingShareView) { if #available(watchOS 9, *) { NavigationView { - ShareStoreView() { + ShareStoreView { isShowingShareView = false } } diff --git a/Sources/PulseUI/Helpers/HARDocument.swift b/Sources/PulseUI/Helpers/HARDocument.swift index e0debfaa9..a5b7bcf99 100644 --- a/Sources/PulseUI/Helpers/HARDocument.swift +++ b/Sources/PulseUI/Helpers/HARDocument.swift @@ -9,7 +9,7 @@ import Foundation import Pulse -fileprivate enum HARDateFormatter { +private enum HARDateFormatter { static var formatter: ISO8601DateFormatter = { let formatter = ISO8601DateFormatter() formatter.formatOptions = [.withFullDate, .withFullTime] @@ -54,13 +54,13 @@ extension HARDocument { var pages: [Page] var entries: [Entry] } - + struct Page: Encodable { let id: String let pageTimings: PageTimings let startedDateTime: String? let title: String - + init( id: String, pageTimings: PageTimings = .init(), @@ -73,7 +73,7 @@ extension HARDocument { self.title = title } } - + struct Entry: Encodable { let cache: Cache let connection: String @@ -84,7 +84,7 @@ extension HARDocument { let startedDateTime: String let time: Double let timings: Timings? - + init(entity: NetworkTaskEntity, pageId: String) { cache = .init() connection = "\(entity.orderedTransactions.first?.remotePort ?? .zero)" @@ -97,16 +97,16 @@ extension HARDocument { queryString: [], url: entity.url ) - + response = .init(entity) - + serverIPAddress = entity.orderedTransactions.first?.remoteAddress ?? "" startedDateTime = HARDateFormatter.formatter.string(from: entity.createdAt) time = entity.duration * 1000 timings = .init(entity.orderedTransactions.last?.timing) } } - + struct Timings: Encodable { let blocked: Double let connect: Int @@ -115,7 +115,7 @@ extension HARDocument { let send: Double let ssl: Int let wait: Double - + init?(_ timing: NetworkLogger.TransactionTimingInfo?) { if let timing { blocked = -1 @@ -123,38 +123,38 @@ extension HARDocument { startDate: timing.fetchStartDate, endDate: timing.connectEndDate ) - + dns = Self.millisecondsBetween( startDate: timing.domainLookupStartDate, endDate: timing.domainLookupEndDate ) - + receive = Self.intervalBetween( startDate: timing.responseStartDate, endDate: timing.responseEndDate ) - + send = Self.intervalBetween( startDate: timing.requestStartDate, endDate: timing.requestEndDate ) - + ssl = Self.millisecondsBetween( startDate: timing.secureConnectionStartDate, endDate: timing.secureConnectionEndDate ) - + wait = timing.duration ?? .zero } else { return nil } } } - + struct PageTimings: Encodable { let onContentLoad: Int let onLoad: Int - + init( onContentLoad: Int = -1, onLoad: Int = -1 @@ -175,7 +175,7 @@ extension HARDocument.Entry { let queryString: [[String: String]] let url: String? } - + struct Response: Encodable { let bodySize: Int let content: Content? @@ -186,7 +186,7 @@ extension HARDocument.Entry { let redirectURL: String let status: Int var statusText: String - + init?(_ entity: NetworkTaskEntity?) { if let entity { bodySize = Int(entity.responseBody?.size ?? -1) @@ -203,14 +203,14 @@ extension HARDocument.Entry { } } } - + struct Content: Encodable { let compression: Int let encoding: String? let mimeType: String let size: Int var text: String = "" - + init?(_ entity: LoggerBlobHandleEntity?) { if let entity { compression = Int(entity.size - entity.decompressedSize) @@ -225,11 +225,11 @@ extension HARDocument.Entry { } } } - + struct Cache: Encodable { let afterRequest: Item? let beforeRequest: Item? - + init( afterRequest: Item? = nil, beforeRequest: Item? = nil @@ -246,7 +246,7 @@ extension HARDocument.Entry.Cache { let expires: String let hitCount: Int let lastAccess: String - + init( eTag: String = "", expires: String = "", @@ -272,7 +272,7 @@ extension HARDocument.Timings { } return Int(timeInterval * 1000) } - + fileprivate static func intervalBetween(startDate: Date?, endDate: Date?) -> TimeInterval { guard let startDate, let endDate else { return .zero diff --git a/Sources/PulseUI/Helpers/Regex.swift b/Sources/PulseUI/Helpers/Regex.swift index 9b96e0fec..795ed5663 100644 --- a/Sources/PulseUI/Helpers/Regex.swift +++ b/Sources/PulseUI/Helpers/Regex.swift @@ -10,10 +10,6 @@ final class Regex { struct Options: OptionSet { let rawValue: Int - init(rawValue: Int) { - self.rawValue = rawValue - } - static let caseInsensitive = Options(rawValue: 1 << 0) static let multiline = Options(rawValue: 1 << 1) static let dotMatchesLineSeparators = Options(rawValue: 1 << 2) diff --git a/Sources/PulseUI/Helpers/ShareItems.swift b/Sources/PulseUI/Helpers/ShareItems.swift index 82db05d98..0c578c90b 100644 --- a/Sources/PulseUI/Helpers/ShareItems.swift +++ b/Sources/PulseUI/Helpers/ShareItems.swift @@ -17,7 +17,7 @@ public enum ShareStoreOutput: String, RawRepresentable, CaseIterable { case .har: return "har" } } - + var interfaceTitle: String { switch self { case .store: "Pulse" diff --git a/Sources/PulseUI/Helpers/ShareStoreTask.swift b/Sources/PulseUI/Helpers/ShareStoreTask.swift index 43a0ca701..ea6c94a06 100644 --- a/Sources/PulseUI/Helpers/ShareStoreTask.swift +++ b/Sources/PulseUI/Helpers/ShareStoreTask.swift @@ -6,7 +6,6 @@ import Foundation import Pulse import CoreData import SwiftUI -import Pulse final class ShareStoreTask { private var isCancelled = false @@ -108,7 +107,7 @@ final class ShareStoreTask { } for objectID in objectIDs { - if let object = try? context.existingObject(with: objectID),let task = LoggerEntity(object).task { + if let object = try? context.existingObject(with: objectID), let task = LoggerEntity(object).task { if let blob = task.responseBody, jobs[blob.objectID] == nil { enqueueJob(for: blob, error: task.decodingError) } diff --git a/Sources/PulseUI/Helpers/TextRenderer.swift b/Sources/PulseUI/Helpers/TextRenderer.swift index 47fdac6ce..530bcb7a2 100644 --- a/Sources/PulseUI/Helpers/TextRenderer.swift +++ b/Sources/PulseUI/Helpers/TextRenderer.swift @@ -6,7 +6,6 @@ import Foundation import Pulse import CoreData import SwiftUI -import Pulse #if os(iOS) || os(visionOS) import PDFKit @@ -441,7 +440,7 @@ struct ConsoleTextRenderer_Previews: PreviewProvider { RichTextView(viewModel: .init(string: NSAttributedString(string: ShareStoreTask(entities: try! LoggerStore.mock.allMessages(), store: .mock, output: .plainText, completion: { _ in }).share().items[0] as! String))) .previewDisplayName("Task (Plain)") - RichTextView(viewModel: .init(string: TextRenderer(options: .sharing).make { $0.render(task.orderedTransactions[0]) } )) + RichTextView(viewModel: .init(string: TextRenderer(options: .sharing).make { $0.render(task.orderedTransactions[0]) })) .previewDisplayName("Transaction") RichTextView(viewModel: .init(string: TextRendererHTML(html: String(data: html, encoding: .utf8)!).render())) @@ -468,7 +467,6 @@ private let task = LoggerStore.preview.entity(for: .login) struct NetworkContent: OptionSet { let rawValue: Int16 - init(rawValue: Int16) { self.rawValue = rawValue } static let header = NetworkContent(rawValue: 1 << 0) static let largeHeader = NetworkContent(rawValue: 1 << 1) @@ -501,7 +499,7 @@ struct NetworkContent: OptionSet { } /// Uncomment to run performance tests in the release mode. -//public enum TextRendererTests { +// public enum TextRendererTests { // public static func share(_ entities: [NSManagedObject], store: LoggerStore, _ completion: @escaping () -> Void) { // // TODO: rewrite using new convenience API for testing // ShareStoreTask(entities: entities, store: store, output: .plainText) { _ in @@ -517,9 +515,9 @@ struct NetworkContent: OptionSet { // try TextUtilities.html(from: string) // } // -//#if os(iOS) +// #if os(iOS) // public static func pdf(from string: NSAttributedString) throws -> Data { // try TextUtilities.pdf(from: string) // } -//#endif -//} +// #endif +// } diff --git a/Sources/PulseUI/Helpers/TextRendererHTML.swift b/Sources/PulseUI/Helpers/TextRendererHTML.swift index 93a96eb84..34a2ada3d 100644 --- a/Sources/PulseUI/Helpers/TextRendererHTML.swift +++ b/Sources/PulseUI/Helpers/TextRendererHTML.swift @@ -31,7 +31,7 @@ final class TextRendererHTML { NSRange(substring.startIndex..]*>"), - let attributesRegex = try? Regex(#"(\w*?)=(\"\w.*?\")"#) else{ + let attributesRegex = try? Regex(#"(\w*?)=(\"\w.*?\")"#) else { assertionFailure("Invalid regex") // Should never happen return string } diff --git a/Sources/PulseUI/Helpers/TextUtilities.swift b/Sources/PulseUI/Helpers/TextUtilities.swift index d8deb3b98..77171f221 100644 --- a/Sources/PulseUI/Helpers/TextUtilities.swift +++ b/Sources/PulseUI/Helpers/TextUtilities.swift @@ -106,10 +106,10 @@ enum TextUtilities { let data = NSMutableData() UIGraphicsBeginPDFContextToData(data, paperRect, nil) - renderer.prepare(forDrawingPages: NSMakeRange(0, renderer.numberOfPages)) + renderer.prepare(forDrawingPages: NSRange(location: 0, length: renderer.numberOfPages)) let bounds = UIGraphicsGetPDFContextBounds() - for i in 0 ..< renderer.numberOfPages { + for i in 0 ..< renderer.numberOfPages { UIGraphicsBeginPDFPage() renderer.drawPage(at: i, in: bounds) } @@ -118,7 +118,7 @@ enum TextUtilities { return data as Data } #endif - + static func har(from string: NSAttributedString) -> Data { string.string.data(using: .utf8) ?? Data() } diff --git a/Sources/PulseUI/Helpers/UXKit.swift b/Sources/PulseUI/Helpers/UXKit.swift index 191ce14ab..a39484149 100644 --- a/Sources/PulseUI/Helpers/UXKit.swift +++ b/Sources/PulseUI/Helpers/UXKit.swift @@ -156,14 +156,13 @@ func runHapticFeedback(_ type: VisionHapticFeedabackTypePlaceholder = .success) } #endif - #if os(macOS) extension NSTextView { var attributedText: NSAttributedString? { get { nil } set { textStorage?.setAttributedString(newValue ?? NSAttributedString()) } } - + var text: String { get { string } set { string = newValue } diff --git a/Sources/PulseUI/Helpers/Version.swift b/Sources/PulseUI/Helpers/Version.swift index 621045ca3..6efd9e134 100644 --- a/Sources/PulseUI/Helpers/Version.swift +++ b/Sources/PulseUI/Helpers/Version.swift @@ -16,7 +16,7 @@ struct Version: Comparable, Sendable { self.minor = minor self.patch = patch } - + var description: String { "\(major).\(minor).\(patch)" } diff --git a/Sources/PulseUI/Helpers/WatchConnectivityService-watchOS.swift b/Sources/PulseUI/Helpers/WatchConnectivityService-watchOS.swift index 08a160902..fcd2e2e0e 100644 --- a/Sources/PulseUI/Helpers/WatchConnectivityService-watchOS.swift +++ b/Sources/PulseUI/Helpers/WatchConnectivityService-watchOS.swift @@ -89,7 +89,7 @@ private extension LoggerStore { DispatchQueue.main.async { completion(nil) } - } catch { + } catch { DispatchQueue.main.async { completion(error) } diff --git a/Sources/PulseUI/Mocks/MockStore.swift b/Sources/PulseUI/Mocks/MockStore.swift index 88edbf3e6..31f912a4c 100644 --- a/Sources/PulseUI/Mocks/MockStore.swift +++ b/Sources/PulseUI/Mocks/MockStore.swift @@ -154,21 +154,21 @@ private func _syncPopulateStore(_ store: LoggerStore) { } let urlSession = URLSession(configuration: .default) - + logger(named: "application") .log(level: .info, "UIApplication.didFinishLaunching", metadata: [ "custom-metadata-key": .string("value") ]) - + logger(named: "application") .log(level: .info, "UIApplication.willEnterForeground") - + logger(named: "session") .log(level: .trace, "Instantiated Session") logger(named: "auth") .log(level: .trace, "Instantiated the new login request") - + logger(named: "analytics") .log(level: .debug, "Will navigate to Dashboard") @@ -227,7 +227,7 @@ private func _logTask(_ mockTask: MockTask, urlSession: URLSession, logger: Netw if let dataTask = task as? URLSessionDataTask { logger.logDataTask(dataTask, didReceive: mockTask.responseBody) } - + let taskInterval = DateInterval(start: startDate, duration: mockTask.duration) let metrics = makeMetrics(for: mockTask, taskInterval: taskInterval) logger.logTask(task, didFinishCollecting: metrics) @@ -345,7 +345,7 @@ private func makeMetrics(for task: MockTask, taskInterval: DateInterval) -> Netw let statusCode = (transaction.response as? HTTPURLResponse)?.statusCode var transferSize = NetworkLogger.TransferSizeInfo() - if transaction.fetchType == .networkLoad { + if transaction.fetchType == .networkLoad { transferSize.requestHeaderBytesSent = getHeadersEstimatedSize(requestHeaders) transferSize.responseHeaderBytesReceived = getHeadersEstimatedSize(responseHeaders) if index == task.transactions.endIndex - 1 && statusCode != 304 { diff --git a/Sources/PulseUI/Mocks/MockTask.swift b/Sources/PulseUI/Mocks/MockTask.swift index d95795d89..1b6d4a552 100644 --- a/Sources/PulseUI/Mocks/MockTask.swift +++ b/Sources/PulseUI/Mocks/MockTask.swift @@ -103,7 +103,7 @@ extension MockTask { responseBody: Data(), transactions: [ .init(fetchType: .networkLoad, request: mockDownloadNukeOriginalRequest, response: mockDownloadNukeRedirectResponse, duration: 0.21283), - .init(fetchType: .networkLoad, request: mockDownloadNukeCurrentRequest, response: mockDownloadNukeResponse, duration: 4.25254, isReusedConnection: true), + .init(fetchType: .networkLoad, request: mockDownloadNukeCurrentRequest, response: mockDownloadNukeResponse, duration: 4.25254, isReusedConnection: true) ], delay: 3.5 ) @@ -114,7 +114,7 @@ extension MockTask { response: mockUploadPulseResponse, responseBody: Data(), transactions: [ - .init(fetchType: .networkLoad, request: mockUploadPulseCurrentRequest, response: mockUploadPulseResponse, duration: 2.21283, isReusedConnection: true), + .init(fetchType: .networkLoad, request: mockUploadPulseCurrentRequest, response: mockUploadPulseResponse, duration: 2.21283, isReusedConnection: true) ], delay: 6.5, taskDescription: "upload-pulse-archive" @@ -127,7 +127,7 @@ extension MockTask { transactions: [ .init(fetchType: .networkLoad, request: mockCreateAPICurrentRequest, response: mockCreateaAPIRedirectResponse, duration: 0.20283), .init(fetchType: .localCache, request: mockCreateAPIRedirectRequest, response: mockCreateaAPIResponse, duration: 0.003), - .init(fetchType: .networkLoad, request: mockCreateAPIRedirectRequest, response: mockCreateAPIResponseNotChanged, duration: 0.0980, isReusedConnection: true), + .init(fetchType: .networkLoad, request: mockCreateAPIRedirectRequest, response: mockCreateAPIResponseNotChanged, duration: 0.0980, isReusedConnection: true) ], delay: 5.5 ) @@ -251,7 +251,6 @@ private let mockProfileFailureResponseBody = """ """.data(using: .utf8)! - // MARK: - Octocat (GET, Image) private let mockOctocatOriginalRequest = URLRequest(url: "https://github.com/octocat.png", headers: [ @@ -330,7 +329,7 @@ private let mockCreateaAPIRedirectResponse = HTTPURLResponse(url: "https://githu private let mockCreateaAPIResponse = HTTPURLResponse(url: "https://github.com/kean/Get", statusCode: 200, headers: [ "Content-Type": "text/html; charset=utf-8", "Content-Length": "90", - "Cache-Control": "no-store", + "Cache-Control": "no-store" ]) private let mockCreateAPIResponseNotChanged = HTTPURLResponse(url: "https://github.com/kean/Get", statusCode: 304, headers: [ @@ -463,7 +462,7 @@ private let mockDownloadNukeRedirectResponse = HTTPURLResponse(url: "https://cod "Location": "https://codeload.github.com/kean/Nuke/zip/tags/11.0.0", "Cache-Control": "max-age=0, private", "Content-Length": "0", - "Content-Security-Policy": "default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com objects-origin.githubusercontent.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events *.actions.githubusercontent.com wss://*.actions.githubusercontent.com online.visualstudio.com/api/v1/locations github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com", + "Content-Security-Policy": "default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com objects-origin.githubusercontent.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events *.actions.githubusercontent.com wss://*.actions.githubusercontent.com online.visualstudio.com/api/v1/locations github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com" ]) private let mockDownloadNukeResponse = HTTPURLResponse(url: "https://codeload.github.com/kean/Nuke/zip/tags/11.0.0", statusCode: 200, headers: [ diff --git a/Sources/PulseUI/Views/ContextMenus.swift b/Sources/PulseUI/Views/ContextMenus.swift index 9b7ca59bf..6c205c93a 100644 --- a/Sources/PulseUI/Views/ContextMenus.swift +++ b/Sources/PulseUI/Views/ContextMenus.swift @@ -200,7 +200,7 @@ enum ContextMenu { UXPasteboard.general.string = String(data: data, encoding: .utf8) runHapticFeedback() }) { - Label("Copy Request", systemImage:"arrow.up.circle") + Label("Copy Request", systemImage: "arrow.up.circle") } } if task.responseBodySize > 0 { @@ -263,7 +263,7 @@ struct StringSearchOptionsMenu: View { struct OpenOnMacOverlay: View { let entity: NSManagedObject @ObservedObject var logger: RemoteLogger = .shared - + var body: some View { if logger.isOpenOnMacSupported { HStack { @@ -287,7 +287,7 @@ struct OpenOnMacOverlay: View { struct ButtonOpenOnMac: View { let entity: NSManagedObject @ObservedObject var logger: RemoteLogger = .shared - + var body: some View { if logger.isOpenOnMacSupported { Section { diff --git a/Sources/PulseUI/Views/KeyValueSectionViewModel.swift b/Sources/PulseUI/Views/KeyValueSectionViewModel.swift index fa6ce1948..33c5f75dd 100644 --- a/Sources/PulseUI/Views/KeyValueSectionViewModel.swift +++ b/Sources/PulseUI/Views/KeyValueSectionViewModel.swift @@ -237,4 +237,3 @@ extension KeyValueSectionViewModel { private func formatBytes(_ count: Int64) -> String { ByteCountFormatter.string(fromByteCount: count) } - diff --git a/Sources/PulseUI/Views/Metrics/NetworkInspectorMetricsView.swift b/Sources/PulseUI/Views/Metrics/NetworkInspectorMetricsView.swift index f82394670..f9389fa7c 100644 --- a/Sources/PulseUI/Views/Metrics/NetworkInspectorMetricsView.swift +++ b/Sources/PulseUI/Views/Metrics/NetworkInspectorMetricsView.swift @@ -70,4 +70,3 @@ struct NetworkInspectorMetricsView_Previews: PreviewProvider { } } #endif - diff --git a/Sources/PulseUI/Views/Metrics/NetworkInspectorTransactionView.swift b/Sources/PulseUI/Views/Metrics/NetworkInspectorTransactionView.swift index b2fda2081..aa02dcbec 100644 --- a/Sources/PulseUI/Views/Metrics/NetworkInspectorTransactionView.swift +++ b/Sources/PulseUI/Views/Metrics/NetworkInspectorTransactionView.swift @@ -15,7 +15,7 @@ struct NetworkInspectorTransactionView: View { contents } } - + @ViewBuilder private var contents: some View { NetworkRequestStatusCell(viewModel: viewModel.statusViewModel) @@ -33,7 +33,7 @@ struct NetworkInspectorTransactionView: View { } NetworkRequestInfoCell(viewModel: viewModel.requestViewModel) } - + @available(iOS 15, visionOS 1.0, *) private func transferSizeView(size: NetworkInspectorTransferInfoViewModel) -> some View { let font = TextHelper().font(style: .init(role: .subheadline, style: .monospacedDigital, width: .condensed)) diff --git a/Sources/PulseUI/Views/Metrics/TimingViewModel+Metrics.swift b/Sources/PulseUI/Views/Metrics/TimingViewModel+Metrics.swift index dd8dfe497..406760067 100644 --- a/Sources/PulseUI/Views/Metrics/TimingViewModel+Metrics.swift +++ b/Sources/PulseUI/Views/Metrics/TimingViewModel+Metrics.swift @@ -91,7 +91,7 @@ private func makeTimingRows(transaction: NetworkTransactionMetricsEntity, taskIn // Scheduling Section if let fetchStartDate = timing.fetchStartDate, let endDate = earliestEventDate, - endDate.timeIntervalSince(fetchStartDate) > 0.001 { + endDate.timeIntervalSince(fetchStartDate) > 0.001 { scheduling.append(makeRow(title: "Queued", color: .systemGray4, from: fetchStartDate, to: endDate)) } diff --git a/Sources/PulseUI/Views/PlaceholderView.swift b/Sources/PulseUI/Views/PlaceholderView.swift index 37bd21855..992869564 100644 --- a/Sources/PulseUI/Views/PlaceholderView.swift +++ b/Sources/PulseUI/Views/PlaceholderView.swift @@ -8,13 +8,13 @@ struct PlaceholderView: View { var imageName: String? let title: String var subtitle: String? - + #if os(tvOS) private let iconSize: CGFloat = 150 #else private let iconSize: CGFloat = 70 #endif - + #if os(macOS) private let maxWidth: CGFloat = .infinity #elseif os(tvOS) @@ -22,7 +22,7 @@ struct PlaceholderView: View { #else private let maxWidth: CGFloat = 280 #endif - + var body: some View { VStack { imageName.map(Image.init(systemName:)) diff --git a/Sources/PulseUI/Views/ShareStoreViewModel.swift b/Sources/PulseUI/Views/ShareStoreViewModel.swift index 40a9ec60d..f12bf1ce4 100644 --- a/Sources/PulseUI/Views/ShareStoreViewModel.swift +++ b/Sources/PulseUI/Views/ShareStoreViewModel.swift @@ -37,7 +37,7 @@ import Combine saveSharingOptions() prepareForSharing() } - + private func updateForCurrentEnvironment() { guard let environment else { return } shareStoreOutputs = environment.configuration.shareStoreOutputs.sorted(by: { lhs, rhs in @@ -51,7 +51,7 @@ import Combine return lhs.rawValue < rhs.rawValue } }) - + if !shareStoreOutputs.contains(output), let shareStoreOutput = shareStoreOutputs.first { /// Update the selected output to one of the available options. output = shareStoreOutput diff --git a/Sources/PulseUI/Views/SpinnerView.swift b/Sources/PulseUI/Views/SpinnerView.swift index 6435a0aa7..d99dd2aa1 100644 --- a/Sources/PulseUI/Views/SpinnerView.swift +++ b/Sources/PulseUI/Views/SpinnerView.swift @@ -51,7 +51,7 @@ final class ProgressViewModel: ObservableObject { init(task: NetworkTaskEntity) { self.title = ProgressViewModel.title(for: task) if task.state == .pending { - observer1 = task.publisher(for: \.progress, options: [.initial, .new]).sink { [weak self] change in + observer1 = task.publisher(for: \.progress, options: [.initial, .new]).sink { [weak self] _ in if let progress = task.progress { self?.register(for: progress) } diff --git a/Sources/PulseUI/Views/StoreDetailsView.swift b/Sources/PulseUI/Views/StoreDetailsView.swift index 34578c26d..f67e3a516 100644 --- a/Sources/PulseUI/Views/StoreDetailsView.swift +++ b/Sources/PulseUI/Views/StoreDetailsView.swift @@ -153,7 +153,7 @@ final class StoreDetailsViewModel: ObservableObject { ("Messages", info.messageCount.description), ("Requests", info.taskCount.description), ("Blobs Size", ByteCountFormatter.string(fromByteCount: info.blobsSize)), - makeDecompressedRow(for: info), + makeDecompressedRow(for: info) ].compactMap { $0 }) }