TM-SGNL-iOS/SignalServiceKit/Messages/OWSOutgoingSenderKeyDistributionMessage.m
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

74 lines
2.1 KiB
Objective-C

//
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
#import "OWSOutgoingSenderKeyDistributionMessage.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
@interface OWSOutgoingSenderKeyDistributionMessage ()
@property (strong, nonatomic, readonly) NSData *serializedSKDM;
@property (assign, atomic) BOOL isSentOnBehalfOfOnlineMessage;
@property (assign, atomic) BOOL isSentOnBehalfOfStoryMessage;
@end
@implementation OWSOutgoingSenderKeyDistributionMessage
- (instancetype)initWithThread:(TSContactThread *)destinationThread
senderKeyDistributionMessageBytes:(NSData *)skdmBytes
transaction:(SDSAnyReadTransaction *)transaction
{
OWSAssertDebug(destinationThread);
OWSAssertDebug(skdmBytes);
if (!destinationThread || !skdmBytes) {
return nil;
}
TSOutgoingMessageBuilder *messageBuilder =
[TSOutgoingMessageBuilder outgoingMessageBuilderWithThread:destinationThread];
self = [super initOutgoingMessageWithBuilder:messageBuilder
additionalRecipients:@[]
explicitRecipients:@[]
skippedRecipients:@[]
transaction:transaction];
if (self) {
_serializedSKDM = [skdmBytes copy];
}
return self;
}
- (BOOL)shouldBeSaved
{
return NO;
}
- (BOOL)isUrgent
{
return NO;
}
- (BOOL)isStorySend
{
return self.isSentOnBehalfOfStoryMessage;
}
- (SealedSenderContentHint)contentHint
{
return SealedSenderContentHintImplicit;
}
- (nullable SSKProtoContentBuilder *)contentBuilderWithThread:(TSThread *)thread
transaction:(SDSAnyReadTransaction *)transaction
{
SSKProtoContentBuilder *builder = [SSKProtoContent builder];
[builder setSenderKeyDistributionMessage:self.serializedSKDM];
return builder;
}
- (void)configureAsSentOnBehalfOf:(TSOutgoingMessage *)message inThread:(TSThread *)thread
{
self.isSentOnBehalfOfOnlineMessage = message.isOnline;
self.isSentOnBehalfOfStoryMessage = message.isStorySend && !thread.isGroupThread;
}
@end