Signal-iOS/SignalServiceKit/Messages/Interactions/TSMessage+RecipientState.swift
2026-03-13 16:58:11 -04:00

40 lines
1.0 KiB
Swift

//
// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
extension TSMessage {
@objc
public static func messageStateForRecipientStates(
_ recipientStates: [TSOutgoingMessageRecipientState],
) -> TSOutgoingMessageState {
var hasSendingReceipient = false
var hasPendingRecipient = false
var hasFailedRecipient = false
for recipientState in recipientStates {
switch recipientState.status {
case .sending:
hasSendingReceipient = true
case .pending:
hasPendingRecipient = true
case .failed:
hasFailedRecipient = true
case .skipped, .sent, .delivered, .read, .viewed:
break
}
}
if hasSendingReceipient {
return .sending
}
if hasPendingRecipient {
return .pending
}
if hasFailedRecipient {
return .failed
}
return .sent
}
}