Merge claude/strange-mirzakhani-179c4e (design-alignment rewrite)
# Conflicts: # swift/Assets.xcassets/LaneFeed.colorset/Contents.json # swift/Assets.xcassets/LanePaper.colorset/Contents.json # swift/Assets.xcassets/LanePeople.colorset/Contents.json # swift/Assets.xcassets/SIOTint.colorset/Contents.json # swift/SocialIO.xcodeproj/project.pbxproj # swift/Sources/App/SocialIOApp.swift # swift/Sources/Core/Models/MailModels.swift # swift/Sources/Core/Services/MockMailService.swift # swift/Sources/Features/Mail/MailRootView.swift
This commit is contained in:
@@ -5,6 +5,7 @@ import Observation
|
|||||||
@Observable
|
@Observable
|
||||||
final class AppViewModel {
|
final class AppViewModel {
|
||||||
var selectedMailbox: Mailbox = .inbox
|
var selectedMailbox: Mailbox = .inbox
|
||||||
|
var selectedLane: Lane?
|
||||||
var selectedThreadID: MailThread.ID?
|
var selectedThreadID: MailThread.ID?
|
||||||
var focusedMessageRouteID: String?
|
var focusedMessageRouteID: String?
|
||||||
var searchText = ""
|
var searchText = ""
|
||||||
@@ -50,6 +51,10 @@ final class AppViewModel {
|
|||||||
.filter { thread in
|
.filter { thread in
|
||||||
laneFilter == nil || thread.lane == laneFilter
|
laneFilter == nil || thread.lane == laneFilter
|
||||||
}
|
}
|
||||||
|
.filter { thread in
|
||||||
|
guard let lane = selectedLane else { return true }
|
||||||
|
return thread.lane == lane
|
||||||
|
}
|
||||||
.filter { thread in
|
.filter { thread in
|
||||||
!showUnreadOnly || thread.isUnread
|
!showUnreadOnly || thread.isUnread
|
||||||
}
|
}
|
||||||
@@ -57,6 +62,27 @@ final class AppViewModel {
|
|||||||
.sorted { $0.lastUpdated > $1.lastUpdated }
|
.sorted { $0.lastUpdated > $1.lastUpdated }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func laneUnreadCount(_ lane: Lane) -> Int {
|
||||||
|
threads.filter { thread in
|
||||||
|
let inCurrentMailbox = selectedMailbox == .starred
|
||||||
|
? thread.isStarred
|
||||||
|
: thread.mailbox == selectedMailbox
|
||||||
|
return inCurrentMailbox && thread.lane == lane && thread.isUnread
|
||||||
|
}.count
|
||||||
|
}
|
||||||
|
|
||||||
|
func laneThreadCount(_ lane: Lane) -> Int {
|
||||||
|
threads.filter { thread in
|
||||||
|
thread.mailbox == .inbox && thread.lane == lane
|
||||||
|
}.count
|
||||||
|
}
|
||||||
|
|
||||||
|
func selectLane(_ lane: Lane?) {
|
||||||
|
selectedLane = lane
|
||||||
|
clearThreadSelection()
|
||||||
|
mailboxNavigationToken = UUID()
|
||||||
|
}
|
||||||
|
|
||||||
var totalUnreadCount: Int {
|
var totalUnreadCount: Int {
|
||||||
threads.filter(\.isUnread).count
|
threads.filter(\.isUnread).count
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user