Delete pending scheduled messages when leaving a group.

main
Cody Henthorne 2023-02-01 19:04:29 -05:00 zatwierdzone przez GitHub
rodzic a12a246e87
commit fe2d71fca0
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 20 dodań i 0 usunięć

Wyświetl plik

@ -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<>();

Wyświetl plik

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