aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/News
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-11-07 10:39:48 -0800
committerDustin Mierau <dustin@mierau.me>2025-11-07 10:39:48 -0800
commit39f51fd902bb34272c78ffdfb872c22095382f70 (patch)
treefee51effb6431aeb5464931052ecdd0df32c6792 /Hotline/macOS/News
parent87f08cf60a5d7c1cf618463916cbac4dab88e0f8 (diff)
Further cleanup of previous refactor. Removing old view model and NetSocket. Added some empty states for newsgroups and message board.
Diffstat (limited to 'Hotline/macOS/News')
-rw-r--r--Hotline/macOS/News/NewsView.swift42
1 files changed, 21 insertions, 21 deletions
diff --git a/Hotline/macOS/News/NewsView.swift b/Hotline/macOS/News/NewsView.swift
index dfc5ab2..a07a441 100644
--- a/Hotline/macOS/News/NewsView.swift
+++ b/Hotline/macOS/News/NewsView.swift
@@ -18,16 +18,7 @@ struct NewsView: View {
var body: some View {
Group {
if model.serverVersion < 151 {
- VStack {
- Text("No News")
- .bold()
- .foregroundStyle(.secondary)
- .font(.title3)
- Text("This server has news turned off.")
- .foregroundStyle(.tertiary)
- .font(.system(size: 13))
- }
- .padding()
+ disabledNewsView
}
else {
NavigationStack {
@@ -37,14 +28,7 @@ struct NewsView: View {
loadingIndicator
}
else if model.news.isEmpty {
- ZStack(alignment: .center) {
- Text("No News")
- .font(.title)
- .multilineTextAlignment(.center)
- .foregroundStyle(.secondary)
- .padding()
- }
- .frame(maxWidth: .infinity)
+ emptyNewsView
}
else {
newsBrowser
@@ -142,7 +126,23 @@ struct NewsView: View {
}
}
- var newsBrowser: some View {
+ private var disabledNewsView: some View {
+ ContentUnavailableView {
+ Label("No News", systemImage: "newspaper")
+ } description: {
+ Text("This server has turned off newsgroups")
+ }
+ }
+
+ private var emptyNewsView: some View {
+ ContentUnavailableView {
+ Label("No News", systemImage: "newspaper")
+ } description: {
+ Text("This server has no newsgroups")
+ }
+ }
+
+ private var newsBrowser: some View {
List(model.news, id: \.self, selection: $selection) { newsItem in
NewsItemView(news: newsItem, depth: 0).tag(newsItem.id)
}
@@ -215,7 +215,7 @@ struct NewsView: View {
}
}
- var loadingIndicator: some View {
+ private var loadingIndicator: some View {
VStack {
HStack {
ProgressView {
@@ -227,7 +227,7 @@ struct NewsView: View {
.frame(maxWidth: .infinity)
}
- var articleViewer: some View {
+ private var articleViewer: some View {
ScrollView {
VStack(alignment: .leading, spacing: 0) {
if let selection = selection, selection.type == .article {