mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-02 00:17:41 +01:00
Add support for admin delete.
This commit is contained in:
committed by
Cody Henthorne
parent
1968438ebb
commit
071fbfd916
@@ -1305,6 +1305,14 @@ public class SignalServiceMessageSender {
|
||||
.build());
|
||||
}
|
||||
|
||||
if (message.getAdminDelete().isPresent()) {
|
||||
SignalServiceDataMessage.AdminDelete adminDelete = message.getAdminDelete().get();
|
||||
builder.adminDelete(new DataMessage.AdminDelete.Builder()
|
||||
.targetAuthorAciBinary(adminDelete.getTargetAuthor().toByteString())
|
||||
.targetSentTimestamp(adminDelete.getTargetSentTimestamp())
|
||||
.build());
|
||||
}
|
||||
|
||||
builder.timestamp(message.getTimestamp());
|
||||
|
||||
return builder;
|
||||
|
||||
@@ -165,6 +165,10 @@ object EnvelopeContentValidator {
|
||||
return Result.Invalid("[DataMessage] Invalid unpin message!")
|
||||
}
|
||||
|
||||
if (dataMessage.adminDelete != null && (dataMessage.adminDelete.targetAuthorAciBinary.isNullOrInvalidAci() || dataMessage.adminDelete.targetSentTimestamp == null)) {
|
||||
return Result.Invalid("[DataMessage] Invalid admin delete message!")
|
||||
}
|
||||
|
||||
return Result.Valid
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,8 @@ class SignalServiceDataMessage private constructor(
|
||||
val pollVote: Optional<PollVote>,
|
||||
val pollTerminate: Optional<PollTerminate>,
|
||||
val pinnedMessage: Optional<PinnedMessage>,
|
||||
val unpinnedMessage: Optional<UnpinnedMessage>
|
||||
val unpinnedMessage: Optional<UnpinnedMessage>,
|
||||
val adminDelete: Optional<AdminDelete>
|
||||
) {
|
||||
val isActivatePaymentsRequest: Boolean = payment.map { it.isActivationRequest }.orElse(false)
|
||||
val isPaymentsActivated: Boolean = payment.map { it.isActivation }.orElse(false)
|
||||
@@ -112,6 +113,7 @@ class SignalServiceDataMessage private constructor(
|
||||
private var pollTerminate: PollTerminate? = null
|
||||
private var pinnedMessage: PinnedMessage? = null
|
||||
private var unpinnedMessage: UnpinnedMessage? = null
|
||||
private var adminDelete: AdminDelete? = null
|
||||
|
||||
fun withTimestamp(timestamp: Long): Builder {
|
||||
this.timestamp = timestamp
|
||||
@@ -260,6 +262,11 @@ class SignalServiceDataMessage private constructor(
|
||||
return this
|
||||
}
|
||||
|
||||
fun withAdminDelete(adminDelete: AdminDelete?): Builder {
|
||||
this.adminDelete = adminDelete
|
||||
return this
|
||||
}
|
||||
|
||||
fun build(): SignalServiceDataMessage {
|
||||
if (timestamp == 0L) {
|
||||
timestamp = System.currentTimeMillis()
|
||||
@@ -293,7 +300,8 @@ class SignalServiceDataMessage private constructor(
|
||||
pollVote = pollVote.asOptional(),
|
||||
pollTerminate = pollTerminate.asOptional(),
|
||||
pinnedMessage = pinnedMessage.asOptional(),
|
||||
unpinnedMessage = unpinnedMessage.asOptional()
|
||||
unpinnedMessage = unpinnedMessage.asOptional(),
|
||||
adminDelete = adminDelete.asOptional()
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -342,6 +350,7 @@ class SignalServiceDataMessage private constructor(
|
||||
data class PollTerminate(val targetSentTimestamp: Long)
|
||||
data class PinnedMessage(val targetAuthor: ServiceId, val targetSentTimestamp: Long, val pinDurationInSeconds: Int?, val forever: Boolean?)
|
||||
data class UnpinnedMessage(val targetAuthor: ServiceId, val targetSentTimestamp: Long)
|
||||
data class AdminDelete(val targetAuthor: ServiceId, val targetSentTimestamp: Long)
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
|
||||
@@ -349,6 +349,11 @@ message DataMessage {
|
||||
optional uint64 targetSentTimestamp = 2;
|
||||
}
|
||||
|
||||
message AdminDelete {
|
||||
optional bytes targetAuthorAciBinary = 1; // 16-byte UUID
|
||||
optional uint64 targetSentTimestamp = 2;
|
||||
}
|
||||
|
||||
optional string body = 1;
|
||||
repeated AttachmentPointer attachments = 2;
|
||||
reserved /*groupV1*/ 3;
|
||||
@@ -376,7 +381,8 @@ message DataMessage {
|
||||
optional PollVote pollVote = 26;
|
||||
optional PinMessage pinMessage = 27;
|
||||
optional UnpinMessage unpinMessage = 28;
|
||||
// NEXT ID: 29
|
||||
optional AdminDelete adminDelete = 29;
|
||||
// NEXT ID: 30
|
||||
}
|
||||
|
||||
message NullMessage {
|
||||
|
||||
Reference in New Issue
Block a user