Add UI components for Release Channel.

This commit is contained in:
Cody Henthorne
2022-01-31 12:46:44 -05:00
parent 45a91e0896
commit 1b1001b0e9
61 changed files with 1011 additions and 323 deletions

View File

@@ -0,0 +1,69 @@
package org.thoughtcrime.securesms.releasechannel
import org.thoughtcrime.securesms.attachments.PointerAttachment
import org.thoughtcrime.securesms.database.MessageDatabase
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList
import org.thoughtcrime.securesms.mms.IncomingMediaMessage
import org.thoughtcrime.securesms.recipients.RecipientId
import org.whispersystems.libsignal.util.guava.Optional
import org.whispersystems.signalservice.api.messages.SignalServiceAttachment
import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer
import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentRemoteId
import java.util.UUID
/**
* One stop shop for inserting Release Channel messages.
*/
object ReleaseChannel {
const val CDN_NUMBER = -1
fun insertAnnouncement(
recipientId: RecipientId,
body: String,
threadId: Long,
image: String? = null,
serverUuid: String? = UUID.randomUUID().toString(),
messageRanges: BodyRangeList? = null
): MessageDatabase.InsertResult? {
val attachments: Optional<List<SignalServiceAttachment>> = if (image != null) {
val attachment = SignalServiceAttachmentPointer(
CDN_NUMBER,
SignalServiceAttachmentRemoteId.from(""),
"image/webp",
null,
Optional.absent(),
Optional.absent(),
0,
0,
Optional.absent(),
Optional.of(image),
false,
false,
false,
Optional.absent(),
Optional.absent(),
System.currentTimeMillis()
)
Optional.of(listOf(attachment))
} else {
Optional.absent()
}
val message = IncomingMediaMessage(
from = recipientId,
sentTimeMillis = System.currentTimeMillis(),
serverTimeMillis = System.currentTimeMillis(),
receivedTimeMillis = System.currentTimeMillis(),
body = body,
attachments = PointerAttachment.forPointers(attachments),
serverGuid = serverUuid,
messageRanges = messageRanges
)
return SignalDatabase.mms.insertSecureDecryptedMessageInbox(message, threadId).orNull()
}
}