Build the fork with Xcode 27

Xcode 27 ships Swift 6.4, which rejects two things 26.09.1 still contains. The
upstream fix for the app itself is cherry-picked as the commit before this one;
these two are what it does not cover.

Compound's colour overrides now take a KeyPath & Sendable, so the HealthChat
brand arrays have to carry the same constraint.

NotificationContentBuilder is main-actor isolated, so its test suite has to
build the type from an async init. The lines match upstream's own fix, which
only exists inside the larger AccountProvider change (#6103) and so cannot be
cherry-picked on its own.
This commit is contained in:
2026-09-22 18:46:09 +02:00
committed by Sedat Qaja
parent 7adc963cf9
commit 22a098ecff
2 changed files with 3 additions and 4 deletions
@@ -30,7 +30,7 @@ struct HealthChatCompoundHook: CompoundHookProtocol {
\.borderInteractivePrimary, \.borderInteractivePrimary,
\.textBadgeAccent \.textBadgeAccent
] ]
let solidUIColorTokens: [KeyPath<CompoundUIColorTokens, UIColor>] = [ let solidUIColorTokens: [KeyPath<CompoundUIColorTokens, UIColor> & Sendable] = [
\.bgActionPrimaryRest, \.bgActionPrimaryRest,
\.bgAccentRest, \.bgAccentRest,
\.iconAccentPrimary, \.iconAccentPrimary,
@@ -69,7 +69,7 @@ struct HealthChatCompoundHook: CompoundHookProtocol {
\.bgBadgeAccent, \.bgBadgeAccent,
\.borderAccentSubtle \.borderAccentSubtle
] ]
let tintUIColorTokens: [KeyPath<CompoundUIColorTokens, UIColor>] = [ let tintUIColorTokens: [KeyPath<CompoundUIColorTokens, UIColor> & Sendable] = [
\.bgAccentSelected, \.bgAccentSelected,
\.bgBadgeAccent, \.bgBadgeAccent,
\.borderAccentSubtle \.borderAccentSubtle
@@ -23,6 +23,7 @@ nonisolated struct NotificationContentBuilderTests {
style: .plain) style: .plain)
mediaProvider = MediaProviderMock(.init()) mediaProvider = MediaProviderMock(.init())
notificationContentBuilder = await NotificationContentBuilder(messageEventStringBuilder: stringBuilder, notificationContentBuilder = await NotificationContentBuilder(messageEventStringBuilder: stringBuilder,
notificationSoundName: UNNotificationSoundName("message.caf"),
userSession: NSEUserSessionMock(.init())) userSession: NSEUserSessionMock(.init()))
} }
@@ -225,7 +226,6 @@ nonisolated struct NotificationContentBuilderTests {
mutating func liveLocationStartNotification() async { mutating func liveLocationStartNotification() async {
let event = TimelineEventSDKMock() let event = TimelineEventSDKMock()
event.eventIdReturnValue = UUID().uuidString event.eventIdReturnValue = UUID().uuidString
event.timestampReturnValue = 0
event.contentReturnValue = .state(content: .beaconInfo) event.contentReturnValue = .state(content: .beaconInfo)
let notificationItem = NotificationItemProxyMock(.init(event: .timeline(event: event), let notificationItem = NotificationItemProxyMock(.init(event: .timeline(event: event),
@@ -253,7 +253,6 @@ nonisolated struct NotificationContentBuilderTests {
mutating func otherStateEventNotification() async { mutating func otherStateEventNotification() async {
let event = TimelineEventSDKMock() let event = TimelineEventSDKMock()
event.eventIdReturnValue = UUID().uuidString event.eventIdReturnValue = UUID().uuidString
event.timestampReturnValue = 0
event.contentReturnValue = .state(content: .roomName) event.contentReturnValue = .state(content: .roomName)
let notificationItem = NotificationItemProxyMock(.init(event: .timeline(event: event), let notificationItem = NotificationItemProxyMock(.init(event: .timeline(event: event),