Delete pending scheduled messages when leaving a group.

This commit is contained in:
Cody Henthorne
2023-02-01 19:04:29 -05:00
committed by GitHub
parent a12a246e87
commit fe2d71fca0
2 changed files with 20 additions and 0 deletions

View File

@@ -127,6 +127,8 @@ import java.util.Set;
import java.util.UUID;
import java.util.function.Function;
import kotlin.Unit;
import static org.thoughtcrime.securesms.contactshare.Contact.Avatar;
public class MessageTable extends DatabaseTable implements MessageTypes, RecipientIdDatabaseReference, ThreadIdDatabaseReference {
@@ -3110,6 +3112,22 @@ public class MessageTable extends DatabaseTable implements MessageTypes, Recipie
ApplicationDependencies.getDatabaseObserver().notifyScheduledMessageObservers(threadId);
}
public void deleteScheduledMessages(@NonNull RecipientId recipientId) {
Log.d(TAG, "deleteScheduledMessages(" + recipientId + ")");
Long threadId = SignalDatabase.threads().getThreadIdFor(recipientId);
if (threadId != null) {
SQLiteDatabaseExtensionsKt.withinTransaction(getWritableDatabase(), d -> {
List<MessageRecord> scheduledMessages = getScheduledMessagesInThread(threadId);
for (MessageRecord record : scheduledMessages) {
deleteScheduledMessage(record.getId());
}
return Unit.INSTANCE;
});
} else {
Log.i(TAG, "No thread exists for " + recipientId);
}
}
public void deleteThread(long threadId) {
Log.d(TAG, "deleteThread(" + threadId + ")");
Set<Long> singleThreadSet = new HashSet<>();

View File

@@ -134,6 +134,8 @@ public final class GroupManager {
throw new GroupChangeFailedException();
}
}
SignalDatabase.recipients().getByGroupId(groupId).ifPresent(id -> SignalDatabase.messages().deleteScheduledMessages(id));
}
@WorkerThread