diff --git a/Pulse.xcodeproj/xcshareddata/xcschemes/Pulse Demo watchOS (Complication).xcscheme b/Pulse.xcodeproj/xcshareddata/xcschemes/Pulse Demo watchOS (Complication).xcscheme
index b69bd06c..6b098f19 100644
--- a/Pulse.xcodeproj/xcshareddata/xcschemes/Pulse Demo watchOS (Complication).xcscheme
+++ b/Pulse.xcodeproj/xcshareddata/xcschemes/Pulse Demo watchOS (Complication).xcscheme
@@ -55,8 +55,10 @@
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
launchAutomaticallySubstyle = "32">
-
+
-
+
-
+
-
+
+
+
+
+
diff --git a/Pulse.xcodeproj/xcshareddata/xcschemes/Pulse Demo watchOS.xcscheme b/Pulse.xcodeproj/xcshareddata/xcschemes/Pulse Demo watchOS.xcscheme
index 9a3f7d31..21c04c8e 100644
--- a/Pulse.xcodeproj/xcshareddata/xcschemes/Pulse Demo watchOS.xcscheme
+++ b/Pulse.xcodeproj/xcshareddata/xcschemes/Pulse Demo watchOS.xcscheme
@@ -54,8 +54,10 @@
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
-
+
-
+
-
+
-
+
+
+
+
+
diff --git a/Sources/PulseUI/Features/Inspector/NetworkInspectorSummaryView.swift b/Sources/PulseUI/Features/Inspector/NetworkInspectorSummaryView.swift
index 2b541494..d8f4bcaf 100644
--- a/Sources/PulseUI/Features/Inspector/NetworkInspectorSummaryView.swift
+++ b/Sources/PulseUI/Features/Inspector/NetworkInspectorSummaryView.swift
@@ -5,25 +5,28 @@
import SwiftUI
import PulseCore
-#if os(iOS) || os(watchOS) || os(macOS)
-
struct NetworkInspectorSummaryView: View {
@ObservedObject var viewModel: NetworkInspectorSummaryViewModel
var body: some View {
+#if os(iOS) || os(macOS)
+ ScrollView {
+ VStack {
+ contents
+ }.padding()
+ }.background(invisibleLinks)
+#elseif os(watchOS)
ScrollView {
-#if os(watchOS)
Spacer().frame(height: 24)
VStack(spacing: 24) {
contents
}
-#else
- VStack {
- contents
- }.padding()
-#endif
+ }.background(invisibleLinks)
+#elseif os(tvOS)
+ List {
+ contents
}
- .background(linksView)
+#endif
}
#if os(iOS) || os(macOS)
@@ -71,9 +74,42 @@ struct NetworkInspectorSummaryView: View {
KeyValueSectionView(viewModel: viewModel.requestHeaders, limit: 10)
KeyValueSectionView(viewModel: viewModel.responseHeaders, limit: 10)
}
+#elseif os(tvOS)
+ var metrics: NetworkInspectorMetricsViewModel?
+
+ @ViewBuilder
+ private var contents: some View {
+ makeKeyValueSection(viewModel: viewModel.summaryModel)
+ if let error = viewModel.errorModel {
+ makeKeyValueSection(viewModel: error)
+ }
+ NavigationLink(destination: NetworkInspectorResponseView(viewModel: viewModel.requestBodyViewModel).focusable(true)) {
+ KeyValueSectionView(viewModel: viewModel.requestBodySection)
+ }
+ if viewModel.responseSummary != nil {
+ NavigationLink(destination: NetworkInspectorResponseView(viewModel: viewModel.responseBodyViewModel).focusable(true)) {
+ KeyValueSectionView(viewModel: viewModel.responseBodySection)
+ }
+ }
+ if let timing = viewModel.timingDetailsModel, let metrics = metrics {
+ NavigationLink(destination: NetworkInspectorMetricsView(viewModel: metrics).focusable(true)) {
+ KeyValueSectionView(viewModel: timing)
+ }
+ }
+ makeKeyValueSection(viewModel: viewModel.requestHeaders)
+ if viewModel.responseSummary != nil {
+ makeKeyValueSection(viewModel: viewModel.responseHeaders)
+ }
+ }
+
+ func makeKeyValueSection(viewModel: KeyValueSectionViewModel) -> some View {
+ NavigationLink(destination: KeyValueSectionView(viewModel: viewModel).focusable(true)) {
+ KeyValueSectionView(viewModel: viewModel, limit: 5)
+ }
+ }
#endif
- private var linksView: some View {
+ private var invisibleLinks: some View {
VStack {
if let errorModel = viewModel.errorModel {
NavigationLink.programmatic(isActive: $viewModel.isErrorRawLinkActive) {
@@ -104,5 +140,3 @@ struct NetworkInspectorSummaryView: View {
.backport.hideAccessibility()
}
}
-
-#endif
diff --git a/Sources/PulseUI/Features/Inspector/NetworkInspectorView.swift b/Sources/PulseUI/Features/Inspector/NetworkInspectorView.swift
index 8207c372..41e31aa2 100644
--- a/Sources/PulseUI/Features/Inspector/NetworkInspectorView.swift
+++ b/Sources/PulseUI/Features/Inspector/NetworkInspectorView.swift
@@ -55,57 +55,6 @@ struct NetworkInspectorView: View {
}
}
}
-#elseif os(watchOS)
- var body: some View {
- NetworkInspectorSummaryView(viewModel: viewModel.makeSummaryModel())
- .navigationBarTitle(Text(viewModel.title))
- .toolbar {
- if let viewModel = viewModel.pin {
- PinButton(viewModel: viewModel, isTextNeeded: false)
- }
- }
- }
-#elseif os(tvOS)
- var body: some View {
- List {
- let viewModel = self.viewModel.makeSummaryModel()
-
- makeKeyValueSection(viewModel: viewModel.summaryModel)
-
- if let error = viewModel.errorModel {
- makeKeyValueSection(viewModel: error)
- }
- if let request = viewModel.requestBodySection {
- NavigationLink(destination: NetworkInspectorResponseView(viewModel: viewModel.requestBodyViewModel).focusable(true)) {
- KeyValueSectionView(viewModel: request)
- }
- }
- if let response = viewModel.responseBodySection {
- NavigationLink(destination: NetworkInspectorResponseView(viewModel: viewModel.responseBodyViewModel).focusable(true)) {
- KeyValueSectionView(viewModel: response)
- }
- }
- if let timing = viewModel.timingDetailsModel, let metrics = self.viewModel.makeMetricsModel() {
- NavigationLink(destination: NetworkInspectorMetricsView(viewModel: metrics).focusable(true)) {
- KeyValueSectionView(viewModel: timing)
- }
- }
- if let parameters = viewModel.requestParameters {
- makeKeyValueSection(viewModel: parameters)
- }
-
- makeKeyValueSection(viewModel: viewModel.requestHeaders)
- if let responseHeaders = viewModel.responseHeaders {
- makeKeyValueSection(viewModel: responseHeaders)
- }
- }
- }
-
- func makeKeyValueSection(viewModel: KeyValueSectionViewModel) -> some View {
- NavigationLink(destination: KeyValueSectionView(viewModel: viewModel).focusable(true)) {
- KeyValueSectionView(viewModel: viewModel, limit: 5)
- }
- }
#elseif os(macOS)
let onClose: () -> Void
@@ -164,11 +113,23 @@ struct NetworkInspectorView: View {
.buttonStyle(PlainButtonStyle())
}
}
-
+#elseif os(watchOS)
+ var body: some View {
+ NetworkInspectorSummaryView(viewModel: viewModel.makeSummaryModel())
+ .navigationBarTitle(Text(viewModel.title))
+ .toolbar {
+ if let viewModel = viewModel.pin {
+ PinButton(viewModel: viewModel, isTextNeeded: false)
+ }
+ }
+ }
+#elseif os(tvOS)
+ var body: some View {
+ NetworkInspectorSummaryView(viewModel: viewModel.makeSummaryModel(), metrics: viewModel.makeMetricsModel())
+ }
#endif
#if os(iOS) || os(macOS)
-
@ViewBuilder
private var selectedTabView: some View {
switch selectedTab {