Skip to content

Commit bb0a835

Browse files
authored
Merge pull request #274 from AvdLee/feature/macos-ui-improvements
macOS UI Improvements
2 parents 7240743 + 1d661f5 commit bb0a835

File tree

8 files changed

+36
-27
lines changed

8 files changed

+36
-27
lines changed

Demo/macOS/Pulse_Demo_macOSApp.swift

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ struct Pulse_Demo_macOSApp: App {
1111
WindowGroup {
1212
ConsoleView(store: .demo)
1313
}
14-
.windowStyle(.hiddenTitleBar)
1514
.windowToolbarStyle(.unified(showsTitle: false))
1615
}
1716
}

Sources/Pulse/LoggerStore/LoggerStore.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ extension LoggerStore {
347347
}
348348

349349
/// Handles event created by the current store and dispatches it to observers.
350-
func handle(_ event: Event) {
350+
public func handle(_ event: Event) {
351351
guard let event = configuration.willHandleEvent(event) else {
352352
return
353353
}

Sources/Pulse/RemoteLogger/RemoteLogger-Connection.swift

+13-12
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import OSLog
1111
import Pulse
1212
#endif
1313

14-
protocol RemoteLoggerConnectionDelegate: AnyObject {
14+
public protocol RemoteLoggerConnectionDelegate: AnyObject {
1515
func connection(_ connection: RemoteLogger.Connection, didChangeState newState: NWConnection.State)
1616
func connection(_ connection: RemoteLogger.Connection, didReceiveEvent event: RemoteLogger.Connection.Event)
1717
}
1818

19-
extension RemoteLogger {
19+
public extension RemoteLogger {
2020
final class Connection {
2121
var endpoint: NWEndpoint { connection.endpoint }
2222
private let connection: NWConnection
@@ -31,14 +31,15 @@ extension RemoteLogger {
3131
self.init(NWConnection(to: endpoint, using: parameters))
3232
}
3333

34-
init(_ connection: NWConnection) {
34+
public init(_ connection: NWConnection, delegate: RemoteLoggerConnectionDelegate? = nil) {
3535
self.connection = connection
36+
self.delegate = delegate
3637

3738
let isLogEnabled = UserDefaults.standard.bool(forKey: "com.github.kean.pulse.debug")
3839
self.log = isLogEnabled ? OSLog(subsystem: "com.github.kean.pulse", category: "RemoteLogger") : .disabled
3940
}
40-
41-
func start(on queue: DispatchQueue) {
41+
42+
public func start(on queue: DispatchQueue) {
4243
connection.stateUpdateHandler = { [weak self] state in
4344
guard let self = self else { return }
4445
DispatchQueue.main.async {
@@ -49,15 +50,15 @@ extension RemoteLogger {
4950
connection.start(queue: queue)
5051
}
5152

52-
enum Event {
53+
public enum Event {
5354
case packet(Packet)
5455
case error(Error)
5556
case completed
5657
}
5758

58-
struct Packet {
59-
let code: UInt8
60-
let body: Data
59+
public struct Packet {
60+
public let code: UInt8
61+
public let body: Data
6162
}
6263

6364
private func receive() {
@@ -130,7 +131,7 @@ extension RemoteLogger {
130131
}
131132
}
132133

133-
func send(code: UInt8, data: Data) {
134+
public func send(code: UInt8, data: Data) {
134135
do {
135136
let data = try encode(code: code, body: data)
136137
let log = self.log
@@ -144,7 +145,7 @@ extension RemoteLogger {
144145
}
145146
}
146147

147-
func send<T: Encodable>(code: UInt8, entity: T) {
148+
public func send<T: Encodable>(code: UInt8, entity: T) {
148149
do {
149150
let data = try JSONEncoder().encode(entity)
150151
send(code: code, data: data)
@@ -206,7 +207,7 @@ extension RemoteLogger {
206207
}
207208
}
208209

209-
func cancel() {
210+
public func cancel() {
210211
connection.cancel()
211212
}
212213
}

Sources/Pulse/RemoteLogger/RemoteLogger-Protocol.swift

+6-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Network
88
import Pulse
99
#endif
1010

11-
extension RemoteLogger {
11+
public extension RemoteLogger {
1212
enum PacketCode: UInt8, Equatable {
1313
// Handshake
1414
case clientHello = 0 // PacketClientHello
@@ -83,7 +83,7 @@ extension RemoteLogger {
8383
return data
8484
}
8585

86-
static func decode(_ data: Data) throws -> LoggerStore.Event.NetworkTaskCompleted {
86+
public static func decode(_ data: Data) throws -> LoggerStore.Event.NetworkTaskCompleted {
8787
guard data.count >= Manifest.size else {
8888
throw PacketParsingError.notEnoughData // Should never happen
8989
}
@@ -197,6 +197,10 @@ extension RemoteLogger {
197197

198198
struct ServerHelloResponse: Codable {
199199
let version: String
200+
201+
public init(version: String) {
202+
self.version = version
203+
}
200204
}
201205
}
202206

Sources/Pulse/RemoteLogger/RemoteLogger.swift

+5-5
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ public final class RemoteLogger: ObservableObject, RemoteLoggerConnectionDelegat
322322

323323
openConnection(to: server, passcode: passcode)
324324
}
325-
325+
326326
private func connectionDidTimeout(isProtected: Bool) {
327327
os_log("Connection did timeout", log: log)
328328
connectionCompletion?(.failure(self.connectionError ?? .unknown(isProtected: isProtected)))
@@ -341,7 +341,7 @@ public final class RemoteLogger: ObservableObject, RemoteLoggerConnectionDelegat
341341
}
342342

343343
private func saveServer(named name: String) {
344-
os_log("Save server %{private}@", log: log, name)
344+
os_log("Save server %{private}@", log: log, name)
345345
knownServers.removeAll(where: { $0 == name })
346346
knownServers.append(name)
347347
saveKnownServers()
@@ -371,7 +371,7 @@ public final class RemoteLogger: ObservableObject, RemoteLoggerConnectionDelegat
371371

372372
// MARK: RemoteLoggerConnectionDelegate
373373

374-
func connection(_ connection: Connection, didChangeState newState: NWConnection.State) {
374+
public func connection(_ connection: Connection, didChangeState newState: NWConnection.State) {
375375
os_log("Connection did change state to %{public}@", log: log, "\(newState)")
376376

377377
switch newState {
@@ -390,7 +390,7 @@ public final class RemoteLogger: ObservableObject, RemoteLoggerConnectionDelegat
390390
}
391391
}
392392

393-
func connection(_ connection: Connection, didReceiveEvent event: Connection.Event) {
393+
public func connection(_ connection: Connection, didReceiveEvent event: Connection.Event) {
394394
switch event {
395395
case .packet(let packet):
396396
do {
@@ -730,5 +730,5 @@ extension RemoteLogger.ConnectionState {
730730
}
731731

732732
extension RemoteLogger {
733-
public static let serviceType = "_pulse._tcp"
733+
public static var serviceType = "_pulse._tcp"
734734
}

Sources/PulseUI/Features/Console/ConsoleView-macos.swift

+7-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ private struct ConsoleMainView: View {
5151

5252
private var contentView: some View {
5353
ConsoleListView()
54-
.frame(minWidth: 200, idealWidth: 400, minHeight: 120, idealHeight: 480)
54+
.frame(minWidth: 400, idealWidth: 500, minHeight: 120, idealHeight: 480)
5555
.toolbar {
5656
ToolbarItemGroup(placement: .navigation) {
5757
contentToolbarNavigationItems
@@ -60,18 +60,21 @@ private struct ConsoleMainView: View {
6060
Button(action: { isShowingFilters = true }) {
6161
Label("Show Filters", systemImage: "line.3.horizontal.decrease.circle")
6262
}
63+
.help("Show Filters")
6364
.popover(isPresented: $isShowingFilters) {
6465
ConsoleFiltersView().frame(width: 300).fixedSize()
6566
}
6667
Button(action: { isShowingSessions = true }) {
6768
Label("Show Sessions", systemImage: "list.clipboard")
6869
}
70+
.help("Show Sessions")
6971
.popover(isPresented: $isShowingSessions) {
7072
SessionsView().frame(width: 300, height: 420)
7173
}
7274
Button(action: { isShowingSettings = true }) {
7375
Label("Show Settings", systemImage: "gearshape")
7476
}
77+
.help("Show Settings")
7578
.popover(isPresented: $isShowingSettings) {
7679
SettingsView().frame(width: 300, height: 420)
7780
}
@@ -88,17 +91,19 @@ private struct ConsoleMainView: View {
8891
if !(environment.store.options.contains(.readonly)) {
8992
Toggle(isOn: $isNowEnabled) {
9093
Image(systemName: "clock")
91-
}
94+
}.help("Now Mode: Automatically scrolls to the top of the view to display newly incoming network requests.")
9295
Button(action: { isSharingStore = true }) {
9396
Image(systemName: "square.and.arrow.up")
9497
}
98+
.help("Share a session")
9599
.popover(isPresented: $isSharingStore, arrowEdge: .bottom) {
96100
ShareStoreView(onDismiss: {})
97101
.frame(width: 240).fixedSize()
98102
}
99103
Button(action: { environment.store.removeAll() }) {
100104
Image(systemName: "trash")
101105
}
106+
.help("Clear current session")
102107
}
103108
}
104109
}

Sources/PulseUI/Features/Console/ConsoleView.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ extension ConsoleView {
1212
///
1313
/// - parameters:
1414
/// - store: The store to display. By default, `LoggerStore/shared`.
15-
/// - mode: The console mode. By default, ``ConsoleMode/all``. If you change
16-
/// the mode to ``ConsoleMode/network``, the console will only display the
17-
/// network messages.
15+
/// - mode: The initial console mode. By default, ``ConsoleMode/all``. If you change
16+
/// the mode to ``ConsoleMode/network``, the console will display the
17+
/// network messages up on appearance.
1818
/// - delegate: The delegate that allows you to customize multiple aspects
1919
/// of the console view.
2020
public init(

Sources/PulseUI/Features/Console/List/ConsoleListView.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ private struct _ConsoleListView: View {
174174
} else {
175175
ConsoleListContentView(proxy: proxy)
176176
}
177-
}
177+
}.scrollContentBackground(.hidden)
178178
}
179179
.environment(\.defaultMinListRowHeight, 1)
180180
}

0 commit comments

Comments
 (0)