Signal-iOS/SignalServiceKit/src/Storage/SSKMessageSenderJobRecord.m
2021-10-21 09:21:10 -03:00

107 lines
3.4 KiB
Objective-C

//
// Copyright (c) 2021 Open Whisper Systems. All rights reserved.
//
#import "SSKMessageSenderJobRecord.h"
#import "TSOutgoingMessage.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
NS_ASSUME_NONNULL_BEGIN
@implementation SSKMessageSenderJobRecord
#pragma mark
- (nullable instancetype)initWithCoder:(NSCoder *)coder
{
return [super initWithCoder:coder];
}
- (nullable instancetype)initWithMessage:(TSOutgoingMessage *)message
removeMessageAfterSending:(BOOL)removeMessageAfterSending
isHighPriority:(BOOL)isHighPriority
label:(NSString *)label
transaction:(SDSAnyReadTransaction *)transaction
error:(NSError **)outError
{
self = [super initWithLabel:label];
if (!self) {
return self;
}
if (message.shouldBeSaved) {
_messageId = message.uniqueId;
OWSAssertDebug(_messageId.length > 0);
BOOL isSaved = [TSInteraction anyExistsWithUniqueId:_messageId transaction:transaction];
if (!isSaved) {
*outError = [NSError errorWithDomain:SSKJobRecordErrorDomain
code:JobRecordError_AssertionError
userInfo:@{ NSDebugDescriptionErrorKey : @"message wasn't saved" }];
return nil;
}
_isMediaMessage = [message hasMediaAttachmentsWithTransaction:transaction.unwrapGrdbRead];
_invisibleMessage = nil;
} else {
_messageId = nil;
_invisibleMessage = message;
}
_removeMessageAfterSending = removeMessageAfterSending;
_isHighPriority = isHighPriority;
_threadId = message.uniqueThreadId;
return self;
}
// --- CODE GENERATION MARKER
// This snippet is generated by /Scripts/sds_codegen/sds_generate.py. Do not manually edit it, instead run `sds_codegen.sh`.
// clang-format off
- (instancetype)initWithGrdbId:(int64_t)grdbId
uniqueId:(NSString *)uniqueId
exclusiveProcessIdentifier:(nullable NSString *)exclusiveProcessIdentifier
failureCount:(NSUInteger)failureCount
label:(NSString *)label
sortId:(unsigned long long)sortId
status:(SSKJobRecordStatus)status
invisibleMessage:(nullable TSOutgoingMessage *)invisibleMessage
isHighPriority:(BOOL)isHighPriority
isMediaMessage:(BOOL)isMediaMessage
messageId:(nullable NSString *)messageId
removeMessageAfterSending:(BOOL)removeMessageAfterSending
threadId:(nullable NSString *)threadId
{
self = [super initWithGrdbId:grdbId
uniqueId:uniqueId
exclusiveProcessIdentifier:exclusiveProcessIdentifier
failureCount:failureCount
label:label
sortId:sortId
status:status];
if (!self) {
return self;
}
_invisibleMessage = invisibleMessage;
_isHighPriority = isHighPriority;
_isMediaMessage = isMediaMessage;
_messageId = messageId;
_removeMessageAfterSending = removeMessageAfterSending;
_threadId = threadId;
return self;
}
// clang-format on
// --- CODE GENERATION MARKER
@end
NS_ASSUME_NONNULL_END