kopia lustrzana https://github.com/ryukoposting/Signal-Android
Delete pending scheduled messages when leaving a group.
rodzic
a12a246e87
commit
fe2d71fca0
|
@ -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<>();
|
||||
|
|
|
@ -134,6 +134,8 @@ public final class GroupManager {
|
|||
throw new GroupChangeFailedException();
|
||||
}
|
||||
}
|
||||
|
||||
SignalDatabase.recipients().getByGroupId(groupId).ifPresent(id -> SignalDatabase.messages().deleteScheduledMessages(id));
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
|
|
Ładowanie…
Reference in New Issue