From ef71e0e9a2d983cb1807f2e250cb2677458ff094 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 24 Nov 2021 17:06:05 -0300 Subject: [PATCH] Payment notifications. --- SignalServiceKit/src/Messages/OWSMessageManager.m | 10 +++++----- .../Messages/Payments/OWSOutgoingPaymentMessage.h | 3 ++- .../Messages/Payments/OWSOutgoingPaymentMessage.m | 4 ++++ SignalUI/Payments/PaymentsImpl.swift | 12 +++++++++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index c31834ccf3..43a7a89126 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -1985,11 +1985,6 @@ NS_ASSUME_NONNULL_BEGIN serverGuid = nil; } - [self updateDisappearingMessageConfigurationWithEnvelope:envelope - dataMessage:dataMessage - thread:thread - transaction:transaction]; - TSQuotedMessage *_Nullable quotedMessage = [TSQuotedMessage quotedMessageForDataMessage:dataMessage thread:thread transaction:transaction]; @@ -2044,6 +2039,11 @@ NS_ASSUME_NONNULL_BEGIN OWSFailDebug(@"Unexpected payment model."); } + [self updateDisappearingMessageConfigurationWithEnvelope:envelope + dataMessage:dataMessage + thread:thread + transaction:transaction]; + // Legit usage of senderTimestamp when creating an incoming group message record // // The builder() factory method requires us to specify every diff --git a/SignalServiceKit/src/Messages/Payments/OWSOutgoingPaymentMessage.h b/SignalServiceKit/src/Messages/Payments/OWSOutgoingPaymentMessage.h index 8db4c9dded..bb000b8bcc 100644 --- a/SignalServiceKit/src/Messages/Payments/OWSOutgoingPaymentMessage.h +++ b/SignalServiceKit/src/Messages/Payments/OWSOutgoingPaymentMessage.h @@ -21,7 +21,8 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithThread:(TSThread *)thread paymentCancellation:(nullable TSPaymentCancellation *)paymentCancellation paymentNotification:(nullable TSPaymentNotification *)paymentNotification - paymentRequest:(nullable TSPaymentRequest *)paymentRequest; + paymentRequest:(nullable TSPaymentRequest *)paymentRequest + expiresInSeconds:(uint32_t)expiresInSeconds; // --- CODE GENERATION MARKER diff --git a/SignalServiceKit/src/Messages/Payments/OWSOutgoingPaymentMessage.m b/SignalServiceKit/src/Messages/Payments/OWSOutgoingPaymentMessage.m index 76cd3c76c6..9fd5a1ecea 100644 --- a/SignalServiceKit/src/Messages/Payments/OWSOutgoingPaymentMessage.m +++ b/SignalServiceKit/src/Messages/Payments/OWSOutgoingPaymentMessage.m @@ -20,10 +20,12 @@ NS_ASSUME_NONNULL_BEGIN paymentCancellation:(nullable TSPaymentCancellation *)paymentCancellation paymentNotification:(nullable TSPaymentNotification *)paymentNotification paymentRequest:(nullable TSPaymentRequest *)paymentRequest + expiresInSeconds:(uint32_t)expiresInSeconds { OWSAssertDebug(paymentCancellation != nil || paymentNotification != nil || paymentRequest != nil); TSOutgoingMessageBuilder *messageBuilder = [TSOutgoingMessageBuilder outgoingMessageBuilderWithThread:thread]; + messageBuilder.expiresInSeconds = expiresInSeconds; self = [super initOutgoingMessageWithBuilder:messageBuilder]; if (!self) { return self; @@ -160,6 +162,8 @@ NS_ASSUME_NONNULL_BEGIN } } + [builder setExpireTimer:self.expiresInSeconds]; + [builder setRequiredProtocolVersion:(uint32_t)SSKProtoDataMessageProtocolVersionPayments]; return builder; } diff --git a/SignalUI/Payments/PaymentsImpl.swift b/SignalUI/Payments/PaymentsImpl.swift index db731d15a7..7d5ab54637 100644 --- a/SignalUI/Payments/PaymentsImpl.swift +++ b/SignalUI/Payments/PaymentsImpl.swift @@ -1046,10 +1046,12 @@ public extension PaymentsImpl { let paymentRequest = TSPaymentRequest(requestUuidString: requestUuidString, paymentAmount: paymentAmount, memoMessage: memoMessage) + let expiresInSeconds = thread.disappearingMessagesDuration(with: transaction) let message = OWSOutgoingPaymentMessage(thread: thread, paymentCancellation: nil, paymentNotification: nil, - paymentRequest: paymentRequest) + paymentRequest: paymentRequest, + expiresInSeconds: expiresInSeconds) Self.messageSenderJobQueue.add(message: message.asPreparer, transaction: transaction) return message } @@ -1078,10 +1080,12 @@ public extension PaymentsImpl { let paymentNotification = TSPaymentNotification(memoMessage: memoMessage, requestUuidString: requestUuidString, mcReceiptData: mcReceiptData) + let expiresInSeconds = thread.disappearingMessagesDuration(with: transaction) let message = OWSOutgoingPaymentMessage(thread: thread, paymentCancellation: nil, paymentNotification: paymentNotification, - paymentRequest: nil) + paymentRequest: nil, + expiresInSeconds: expiresInSeconds) Self.messageSenderJobQueue.add(message: message.asPreparer, transaction: transaction) return message @@ -1102,10 +1106,12 @@ public extension PaymentsImpl { let thread = TSContactThread.getOrCreateThread(withContactAddress: address, transaction: transaction) let paymentCancellation = TSPaymentCancellation(requestUuidString: requestUuidString) + let expiresInSeconds = thread.disappearingMessagesDuration(with: transaction) let message = OWSOutgoingPaymentMessage(thread: thread, paymentCancellation: paymentCancellation, paymentNotification: nil, - paymentRequest: nil) + paymentRequest: nil, + expiresInSeconds: expiresInSeconds) Self.messageSenderJobQueue.add(message: message.asPreparer, transaction: transaction) return message