Add in-chat payment messages.

This commit is contained in:
Cody Henthorne
2022-11-10 14:45:45 -05:00
committed by Greyson Parrelli
parent 28193c2f61
commit 1dc29fda12
43 changed files with 708 additions and 98 deletions

View File

@@ -12,8 +12,10 @@ import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.linkpreview.LinkPreview
import org.thoughtcrime.securesms.recipients.RecipientId
import org.whispersystems.signalservice.api.messages.SignalServiceAttachment
import org.whispersystems.signalservice.api.messages.SignalServiceContent
import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2
import java.util.Optional
import java.util.UUID
class IncomingMediaMessage(
val from: RecipientId?,
@@ -39,6 +41,7 @@ class IncomingMediaMessage(
linkPreviews: List<LinkPreview> = emptyList(),
mentions: List<Mention> = emptyList(),
val giftBadge: GiftBadge? = null,
val isPaymentsNotification: Boolean = false,
val isActivatePaymentsRequest: Boolean = false,
val isPaymentsActivated: Boolean = false
) {
@@ -138,4 +141,28 @@ class IncomingMediaMessage(
isActivatePaymentsRequest = activatePaymentsRequest,
isPaymentsActivated = paymentsActivated
)
companion object {
@JvmStatic
fun createIncomingPaymentNotification(
from: RecipientId,
content: SignalServiceContent,
receivedTime: Long,
expiresIn: Long,
paymentUuid: UUID
): IncomingMediaMessage {
return IncomingMediaMessage(
from = from,
body = paymentUuid.toString(),
sentTimeMillis = content.timestamp,
serverTimeMillis = content.serverReceivedTimestamp,
receivedTimeMillis = receivedTime,
expiresIn = expiresIn,
isUnidentified = content.isNeedsReceipt,
serverGuid = content.serverUuid,
isPushMessage = true,
isPaymentsNotification = true
)
}
}
}

View File

@@ -193,6 +193,10 @@ public class OutgoingMediaMessage {
return false;
}
public boolean isPaymentsNotification() {
return false;
}
public boolean isRequestToActivatePayments() {
return false;
}

View File

@@ -23,12 +23,14 @@ class OutgoingRequestToActivatePaymentMessages(
StoryType.NONE,
null,
false,
null, emptyList(), emptyList(), emptyList(),
null,
emptyList(),
emptyList(),
emptyList(),
null
) {
override fun isRequestToActivatePayments(): Boolean {
return true
}
override fun isRequestToActivatePayments(): Boolean = true
override fun isUrgent(): Boolean = false
}
/**
@@ -50,10 +52,37 @@ class OutgoingPaymentsActivatedMessages(
StoryType.NONE,
null,
false,
null, emptyList(), emptyList(), emptyList(),
null,
emptyList(),
emptyList(),
emptyList(),
null
) {
override fun isPaymentsActivated(): Boolean {
return true
}
override fun isPaymentsActivated(): Boolean = true
override fun isUrgent(): Boolean = false
}
class OutgoingPaymentsNotificationMessage(
recipient: Recipient,
paymentUuid: String,
sentTimeMillis: Long,
expiresIn: Long
) : OutgoingSecureMediaMessage(
recipient,
paymentUuid,
LinkedList(),
sentTimeMillis,
ThreadDatabase.DistributionTypes.CONVERSATION,
expiresIn,
false,
StoryType.NONE,
null,
false,
null,
emptyList(),
emptyList(),
emptyList(),
null
) {
override fun isPaymentsNotification(): Boolean = true
}