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.UUID;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import kotlin.Unit;
|
||||||
|
|
||||||
import static org.thoughtcrime.securesms.contactshare.Contact.Avatar;
|
import static org.thoughtcrime.securesms.contactshare.Contact.Avatar;
|
||||||
|
|
||||||
public class MessageTable extends DatabaseTable implements MessageTypes, RecipientIdDatabaseReference, ThreadIdDatabaseReference {
|
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);
|
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) {
|
public void deleteThread(long threadId) {
|
||||||
Log.d(TAG, "deleteThread(" + threadId + ")");
|
Log.d(TAG, "deleteThread(" + threadId + ")");
|
||||||
Set<Long> singleThreadSet = new HashSet<>();
|
Set<Long> singleThreadSet = new HashSet<>();
|
||||||
|
|
|
@ -134,6 +134,8 @@ public final class GroupManager {
|
||||||
throw new GroupChangeFailedException();
|
throw new GroupChangeFailedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SignalDatabase.recipients().getByGroupId(groupId).ifPresent(id -> SignalDatabase.messages().deleteScheduledMessages(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
|
|
Ładowanie…
Reference in New Issue