mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
Add pending and failed states for admin delete.
This commit is contained in:
committed by
Greyson Parrelli
parent
3af8b6050c
commit
74d9e3248b
@@ -106,6 +106,7 @@ import org.thoughtcrime.securesms.database.model.StoryResult
|
||||
import org.thoughtcrime.securesms.database.model.StoryType
|
||||
import org.thoughtcrime.securesms.database.model.StoryType.Companion.fromCode
|
||||
import org.thoughtcrime.securesms.database.model.StoryViewState
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.AdminDeleteStatus
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GV2UpdateDescription
|
||||
@@ -3788,6 +3789,45 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets admin delete status to pending
|
||||
*/
|
||||
fun markAsPendingAdminDelete(messageId: Long) {
|
||||
val messageExtras = MessageExtras(adminDeleteStatus = AdminDeleteStatus(AdminDeleteStatus.Status.PENDING))
|
||||
writableDatabase
|
||||
.update(TABLE_NAME)
|
||||
.values(MESSAGE_EXTRAS to messageExtras.encode())
|
||||
.where("$ID = ?", messageId)
|
||||
.run()
|
||||
AppDependencies.databaseObserver.notifyMessageUpdateObservers(MessageId(messageId))
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets admin delete status to failed
|
||||
*/
|
||||
fun markAsFailedAdminDelete(messageId: Long) {
|
||||
val messageExtras = MessageExtras(adminDeleteStatus = AdminDeleteStatus(AdminDeleteStatus.Status.FAILED))
|
||||
writableDatabase
|
||||
.update(TABLE_NAME)
|
||||
.values(MESSAGE_EXTRAS to messageExtras.encode())
|
||||
.where("$ID = ?", messageId)
|
||||
.run()
|
||||
AppDependencies.databaseObserver.notifyMessageUpdateObservers(MessageId(messageId))
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets admin delete status to complete.
|
||||
*/
|
||||
fun markAsSentAdminDelete(messageId: Long) {
|
||||
val messageExtras = MessageExtras(adminDeleteStatus = AdminDeleteStatus(AdminDeleteStatus.Status.DONE))
|
||||
writableDatabase
|
||||
.update(TABLE_NAME)
|
||||
.values(MESSAGE_EXTRAS to messageExtras.encode())
|
||||
.where("$ID = ?", messageId)
|
||||
.run()
|
||||
AppDependencies.databaseObserver.notifyMessageUpdateObservers(MessageId(messageId))
|
||||
}
|
||||
|
||||
/**
|
||||
* When a message gets deleted, clear the pinned record and remove any references
|
||||
*/
|
||||
|
||||
@@ -46,6 +46,7 @@ import org.thoughtcrime.securesms.components.transfercontrols.TransferControlVie
|
||||
import org.thoughtcrime.securesms.database.MessageTypes;
|
||||
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
|
||||
import org.thoughtcrime.securesms.database.documents.NetworkFailure;
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.AdminDeleteStatus;
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList;
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context;
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GroupCallUpdateDetails;
|
||||
@@ -173,6 +174,15 @@ public abstract class MessageRecord extends DisplayRecord {
|
||||
return MessageTypes.isLegacyType(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFailed() {
|
||||
return super.isFailed() || isFailedAdminDelete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPending() {
|
||||
return super.isPending() || isPendingAdminDelete();
|
||||
}
|
||||
|
||||
@Override
|
||||
@WorkerThread
|
||||
@@ -789,6 +799,18 @@ public abstract class MessageRecord extends DisplayRecord {
|
||||
return deletedBy;
|
||||
}
|
||||
|
||||
public boolean isPendingAdminDelete() {
|
||||
return messageExtras != null &&
|
||||
messageExtras.adminDeleteStatus != null &&
|
||||
messageExtras.adminDeleteStatus.status == AdminDeleteStatus.Status.PENDING;
|
||||
}
|
||||
|
||||
public boolean isFailedAdminDelete() {
|
||||
return messageExtras != null &&
|
||||
messageExtras.adminDeleteStatus != null &&
|
||||
messageExtras.adminDeleteStatus.status == AdminDeleteStatus.Status.FAILED;
|
||||
}
|
||||
|
||||
public boolean isInMemoryMessageRecord() {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user