krz/hutch

an ios client for sourcehut

clone: git clone https://gitbay.org/krz/hutch.git

0ad430c79eedac4140680e3aaca238969ac711b1

signed_unknown_key

author: Christian Cleberg <hello@cleberg.net> · 2026-07-16T04:27:03Z
committer: <noreply@github.com>

Merge pull request #5 from zerolabsco/inbox-unread-baseline

Start a new account at zero unread
 Hutch/App/AppState.swift                          |   3 +
 Hutch/Models/Inbox.swift                          |  45 +++++++-
 Hutch/Networking/MailingListActivity.swift        | 135 ++++++++++++++++++++++
 Hutch/Views/Home/HomeView.swift                   |   2 +-
 Hutch/Views/Home/HomeViewModel.swift              |  74 +++++++-----
 Hutch/Views/Projects/ProjectMailingListView.swift |  21 +++-
 Hutch/Views/Work/WorkView.swift                   |   2 +-
 HutchTests/InboxViewModelTests.swift              | 104 +++++++++++++++++
 HutchTests/MailingListActivityTests.swift         |  77 ++++++++++++
 9 files changed, 423 insertions(+), 40 deletions(-)

diff --cc Hutch/Views/Projects/ProjectMailingListView.swift
index 696cf6b,e4c9df4..10bb19e
--- a/Hutch/Views/Projects/ProjectMailingListView.swift
+++ b/Hutch/Views/Projects/ProjectMailingListView.swift
@@@ -104,10 -84,15 +104,16 @@@ final class MailingListDetailViewModel 
                  responseType: ProjectMailingListThreadsResponse.self
              )
  
+             let activity = await MailingListActivityLoader.load(
+                 client: client,
+                 listRID: mailingList.rid,
+                 since: InboxReadStateStore.baseline(defaults: defaults) ?? .distantPast
+             )
+ 
              threads = deduplicateThreads(
-                 response.list.threads.results.map(makeSummary(from:))
+                 response.list.threads.results.map { makeSummary(from: $0, activity: activity) }
              )
 +            patchsets = Self.patchsets(from: response.list.threads.results)
          } catch {
              self.error = "Failed to load mailing list"
          }