Adapt Live Activity icon capacity

This commit is contained in:
Kaede Akino committed 2026-09-12 15:37:52 +08:00
1 parent 9b04003012
commit 18cae18320
3 files changed
+20 -6

No files matched your search

+3 -1
View File
@@ -850,8 +850,10 @@ private actor MobileTestSFTPClient: SFTPClientProtocol {
let state = WorkspaceActivityAttributes.ContentState.snapshot(sessions, focusedID: focused)
#expect(state.workspaceCount == 12)
#expect(state.connectedCount == 3)
#expect(state.sessions.count == WorkspaceActivityAttributes.ContentState.maximumPresentedSessionCount)
#expect(WorkspaceActivityAttributes.ContentState.maximumPresentedSessionCount == 6)
#expect(state.sessions.count == 6)
#expect(state.sessions.first?.id == focused)
#expect(state.workspaceCount > state.sessions.count)
#expect(WorkspaceActivityAttributes.workspaceID(from: state.destinationURL) == focused)
#expect(try JSONEncoder().encode(state).count < 3500)
}
+16 -4
View File
@@ -52,8 +52,21 @@ struct WorkspaceLiveActivity: Widget {
}
private func sessions(_ context: ActivityViewContext<WorkspaceActivityAttributes>) -> some View {
let visibleSessions = context.state.sessions.prefix(
WorkspaceActivityAttributes.ContentState.maximumPresentedSessionCount)
ViewThatFits(in: .horizontal) {
sessionRow(
context,
maximumVisibleCount: WorkspaceActivityAttributes.ContentState.maximumPresentedSessionCount)
sessionRow(context, maximumVisibleCount: 5)
sessionRow(context, maximumVisibleCount: 4)
}
.frame(maxWidth: .infinity, alignment: .leading)
}
private func sessionRow(
_ context: ActivityViewContext<WorkspaceActivityAttributes>,
maximumVisibleCount: Int
) -> some View {
let visibleSessions = context.state.sessions.prefix(maximumVisibleCount)
return HStack(spacing: 8) {
ForEach(visibleSessions) { session in
@@ -70,9 +83,8 @@ struct WorkspaceLiveActivity: Widget {
.frame(minWidth: 44, minHeight: 44)
}.accessibilityLabel("All Workspaces")
}
Spacer(minLength: 0)
}
.frame(maxWidth: .infinity, alignment: .leading)
.fixedSize(horizontal: true, vertical: false)
}
private func appIcon(size: CGFloat) -> some View {
@@ -15,7 +15,7 @@ nonisolated struct WorkspaceActivityAttributes: ActivityAttributes {
}
struct ContentState: Codable, Hashable {
static let maximumPresentedSessionCount = 4
static let maximumPresentedSessionCount = 6
var workspaceCount: Int
var connectedCount: Int