aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/ServerView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-10-28 10:06:33 -0700
committerDustin Mierau <dustin@mierau.me>2025-10-28 10:06:33 -0700
commitc5165d348c1efbcc553b3c31dbeaa23353914fb6 (patch)
tree6ba4121a34c095d1180d3025f59e5a300b533937 /Hotline/macOS/ServerView.swift
parentd23d0ad9405c1622569415e6ce16d3768af2936a (diff)
Some state cleanup and banner color caching in ServerState.
Diffstat (limited to 'Hotline/macOS/ServerView.swift')
-rw-r--r--Hotline/macOS/ServerView.swift22
1 files changed, 19 insertions, 3 deletions
diff --git a/Hotline/macOS/ServerView.swift b/Hotline/macOS/ServerView.swift
index 77b6dc8..6d5743c 100644
--- a/Hotline/macOS/ServerView.swift
+++ b/Hotline/macOS/ServerView.swift
@@ -6,11 +6,14 @@ import AppKit
class ServerState: Equatable {
var id: UUID = UUID()
var selection: ServerNavigationType
-
+ var serverName: String? = nil
+ var serverBanner: NSImage? = nil
+ var bannerColors: ColorArt? = nil
+
init(selection: ServerNavigationType) {
self.selection = selection
}
-
+
static func == (lhs: ServerState, rhs: ServerState) -> Bool {
return lhs.id == rhs.id
}
@@ -104,7 +107,7 @@ extension FocusedValues {
get { self[ActiveHotlineModelFocusedValueKey.self] }
set { self[ActiveHotlineModelFocusedValueKey.self] = newValue }
}
-
+
var activeServerState: ServerState? {
get { self[ActiveServerStateFocusedValueKey.self] }
set { self[ActiveServerStateFocusedValueKey.self] = newValue }
@@ -238,6 +241,19 @@ struct ServerView: View {
.onDisappear {
model.disconnect()
}
+ .onChange(of: model.serverTitle) { oldTitle, newTitle in
+ state.serverName = newTitle
+ }
+ .onChange(of: model.bannerImage) { oldBanner, newBanner in
+ withAnimation {
+ state.serverBanner = newBanner
+ if let banner = newBanner {
+ state.bannerColors = ColorArt(image: banner, scaledSize: NSSize(width: 100, height: 100))
+ } else {
+ state.bannerColors = nil
+ }
+ }
+ }
.alert(model.errorMessage ?? "Server Error", isPresented: $model.errorDisplayed) {
Button("OK") {}
}