Signal-iOS/Signal/util/TSMessage+RenderableContent.swift

32 lines
1.3 KiB
Swift

//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
public import SignalServiceKit
extension TSMessage {
/// Dangerous to use for uninserted messages; exposed only in the Signal target because most rendering
/// uses already-inserted messages, obviating the concern.
public func hasRenderableContent(tx: DBReadTransaction) -> Bool {
guard let rowId = self.sqliteRowId else {
owsFailDebug("Checking renderable content for uninserted message!")
return TSMessageBuilder.hasRenderableContent(
hasNonemptyBody: body?.nilIfEmpty != nil,
hasBodyAttachmentsOrOversizeText: false,
hasLinkPreview: linkPreview != nil,
hasQuotedReply: quotedMessage != nil,
hasContactShare: contactShare != nil,
hasSticker: messageSticker != nil,
hasGiftBadge: giftBadge != nil,
isStoryReply: isStoryReply,
isPaymentMessage: (self is OWSPaymentMessage || self is OWSArchivedPaymentMessage),
storyReactionEmoji: storyReactionEmoji,
isPoll: isPoll
)
}
return insertedMessageHasRenderableContent(rowId: rowId, tx: tx)
}
}