Move ViewOnceMessageManager and ExpiringMessageManager to AppDependencies.

fork-5.53.8
Greyson Parrelli 2021-04-13 14:49:32 -04:00 zatwierdzone przez GitHub
rodzic 0020c7c6dc
commit 670aed2074
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
13 zmienionych plików z 82 dodań i 48 usunięć

Wyświetl plik

@ -95,9 +95,7 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr
private static final String TAG = Log.tag(ApplicationContext.class);
private ExpiringMessageManager expiringMessageManager;
private ViewOnceMessageManager viewOnceMessageManager;
private PersistentLogger persistentLogger;
private PersistentLogger persistentLogger;
public static ApplicationContext getInstance(Context context) {
return (ApplicationContext)context.getApplicationContext();
@ -194,17 +192,6 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr
ApplicationDependencies.getShakeToReport().disable();
}
public ExpiringMessageManager getExpiringMessageManager() {
if (expiringMessageManager == null) {
initializeExpiringMessageManager();
}
return expiringMessageManager;
}
public ViewOnceMessageManager getViewOnceMessageManager() {
return viewOnceMessageManager;
}
public PersistentLogger getPersistentLogger() {
return persistentLogger;
}
@ -299,11 +286,11 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr
}
private void initializeExpiringMessageManager() {
this.expiringMessageManager = new ExpiringMessageManager(this);
ApplicationDependencies.getExpiringMessageManager().checkSchedule();
}
private void initializeRevealableMessageManager() {
this.viewOnceMessageManager = new ViewOnceMessageManager(this);
ApplicationDependencies.getViewOnceMessageManager().scheduleIfNecessary();
}
private void initializePeriodicTasks() {

Wyświetl plik

@ -26,6 +26,7 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.util.DateUtils;
@ -197,11 +198,11 @@ public class ConversationItemFooter extends LinearLayout {
this.timerView.startAnimation();
if (messageRecord.getExpireStarted() + messageRecord.getExpiresIn() <= System.currentTimeMillis()) {
ApplicationContext.getInstance(getContext()).getExpiringMessageManager().checkSchedule();
ApplicationDependencies.getExpiringMessageManager().checkSchedule();
}
} else if (!messageRecord.isOutgoing() && !messageRecord.isMediaPending()) {
SignalExecutors.BOUNDED.execute(() -> {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(getContext()).getExpiringMessageManager();
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
long id = messageRecord.getId();
boolean mms = messageRecord.isMms();

Wyświetl plik

@ -1382,9 +1382,7 @@ public class ConversationFragment extends LoggingFragment {
DatabaseFactory.getAttachmentDatabase(requireContext()).deleteAttachmentFilesForViewOnceMessage(messageRecord.getId());
ApplicationContext.getInstance(requireContext())
.getViewOnceMessageManager()
.scheduleIfNecessary();
ApplicationDependencies.getViewOnceMessageManager().scheduleIfNecessary();
ApplicationDependencies.getJobManager().add(new MultiDeviceViewOnceOpenJob(new MessageDatabase.SyncMessageId(messageRecord.getIndividualRecipient().getId(), messageRecord.getDateSent())));

Wyświetl plik

@ -23,6 +23,8 @@ import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.payments.Payments;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.recipients.LiveRecipientCache;
import org.thoughtcrime.securesms.revealable.ViewOnceMessageManager;
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.service.TrimThreadsByDateManager;
import org.thoughtcrime.securesms.service.webrtc.SignalCallManager;
import org.thoughtcrime.securesms.shakereport.ShakeToReport;
@ -75,6 +77,8 @@ public class ApplicationDependencies {
private static volatile TypingStatusSender typingStatusSender;
private static volatile DatabaseObserver databaseObserver;
private static volatile TrimThreadsByDateManager trimThreadsByDateManager;
private static volatile ViewOnceMessageManager viewOnceMessageManager;
private static volatile ExpiringMessageManager expiringMessageManager;
private static volatile Payments payments;
private static volatile ShakeToReport shakeToReport;
private static volatile SignalCallManager signalCallManager;
@ -341,9 +345,37 @@ public class ApplicationDependencies {
return trimThreadsByDateManager;
}
public static @NonNull ViewOnceMessageManager getViewOnceMessageManager() {
if (viewOnceMessageManager == null) {
synchronized (LOCK) {
if (viewOnceMessageManager == null) {
viewOnceMessageManager = provider.provideViewOnceMessageManager();
}
}
}
return viewOnceMessageManager;
}
public static @NonNull ExpiringMessageManager getExpiringMessageManager() {
if (expiringMessageManager == null) {
synchronized (LOCK) {
if (expiringMessageManager == null) {
expiringMessageManager = provider.provideExpiringMessageManager();
}
}
}
return expiringMessageManager;
}
public static TypingStatusRepository getTypingStatusRepository() {
if (typingStatusRepository == null) {
typingStatusRepository = provider.provideTypingStatusRepository();
synchronized (LOCK) {
if (typingStatusRepository == null) {
typingStatusRepository = provider.provideTypingStatusRepository();
}
}
}
return typingStatusRepository;
@ -351,7 +383,11 @@ public class ApplicationDependencies {
public static TypingStatusSender getTypingStatusSender() {
if (typingStatusSender == null) {
typingStatusSender = provider.provideTypingStatusSender();
synchronized (LOCK) {
if (typingStatusSender == null) {
typingStatusSender = provider.provideTypingStatusSender();
}
}
}
return typingStatusSender;
@ -427,6 +463,8 @@ public class ApplicationDependencies {
@NonNull MessageNotifier provideMessageNotifier();
@NonNull IncomingMessageObserver provideIncomingMessageObserver();
@NonNull TrimThreadsByDateManager provideTrimThreadsByDateManager();
@NonNull ViewOnceMessageManager provideViewOnceMessageManager();
@NonNull ExpiringMessageManager provideExpiringMessageManager();
@NonNull TypingStatusRepository provideTypingStatusRepository();
@NonNull TypingStatusSender provideTypingStatusSender();
@NonNull DatabaseObserver provideDatabaseObserver();

Wyświetl plik

@ -42,6 +42,8 @@ import org.thoughtcrime.securesms.payments.Payments;
import org.thoughtcrime.securesms.push.SecurityEventListener;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.recipients.LiveRecipientCache;
import org.thoughtcrime.securesms.revealable.ViewOnceMessageManager;
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.service.TrimThreadsByDateManager;
import org.thoughtcrime.securesms.service.webrtc.SignalCallManager;
import org.thoughtcrime.securesms.shakereport.ShakeToReport;
@ -196,6 +198,16 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
return new TrimThreadsByDateManager(context);
}
@Override
public @NonNull ViewOnceMessageManager provideViewOnceMessageManager() {
return new ViewOnceMessageManager(context);
}
@Override
public @NonNull ExpiringMessageManager provideExpiringMessageManager() {
return new ExpiringMessageManager(context);
}
@Override
public @NonNull TypingStatusRepository provideTypingStatusRepository() {
return new TypingStatusRepository();

Wyświetl plik

@ -236,9 +236,8 @@ public final class PushGroupSendJob extends PushSendJob {
if (message.getExpiresIn() > 0 && !message.isExpirationUpdate()) {
database.markExpireStarted(messageId);
ApplicationContext.getInstance(context)
.getExpiringMessageManager()
.scheduleDeletion(messageId, true, message.getExpiresIn());
ApplicationDependencies.getExpiringMessageManager()
.scheduleDeletion(messageId, true, message.getExpiresIn());
}
if (message.isViewOnce()) {

Wyświetl plik

@ -107,7 +107,7 @@ public class PushMediaSendJob extends PushSendJob {
public void onPushSend()
throws IOException, MmsException, NoSuchMessageException, UndeliverableMessageException
{
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager();
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageDatabase database = DatabaseFactory.getMmsDatabase(context);
OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
long threadId = database.getMessageRecord(messageId).getThreadId();

Wyświetl plik

@ -74,7 +74,7 @@ public class PushTextSendJob extends PushSendJob {
@Override
public void onPushSend() throws IOException, NoSuchMessageException, UndeliverableMessageException {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager();
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageDatabase database = DatabaseFactory.getSmsDatabase(context);
SmsMessageRecord record = database.getSmsMessage(messageId);

Wyświetl plik

@ -992,15 +992,13 @@ public final class MessageContentProcessor {
List<Pair<Long, Long>> expiringMedia = DatabaseFactory.getMmsDatabase(context).setTimestampRead(new SyncMessageId(Recipient.externalPush(context, readMessage.getSender()).getId(), readMessage.getTimestamp()), envelopeTimestamp);
for (Pair<Long, Long> expiringMessage : expiringText) {
ApplicationContext.getInstance(context)
.getExpiringMessageManager()
.scheduleDeletion(expiringMessage.first(), false, envelopeTimestamp, expiringMessage.second());
ApplicationDependencies.getExpiringMessageManager()
.scheduleDeletion(expiringMessage.first(), false, envelopeTimestamp, expiringMessage.second());
}
for (Pair<Long, Long> expiringMessage : expiringMedia) {
ApplicationContext.getInstance(context)
.getExpiringMessageManager()
.scheduleDeletion(expiringMessage.first(), true, envelopeTimestamp, expiringMessage.second());
ApplicationDependencies.getExpiringMessageManager()
.scheduleDeletion(expiringMessage.first(), true, envelopeTimestamp, expiringMessage.second());
}
}
@ -1094,7 +1092,7 @@ public final class MessageContentProcessor {
ApplicationDependencies.getJobManager().add(new TrimThreadJob(insertResult.get().getThreadId()));
if (message.isViewOnce()) {
ApplicationContext.getInstance(context).getViewOnceMessageManager().scheduleIfNecessary();
ApplicationDependencies.getViewOnceMessageManager().scheduleIfNecessary();
}
}
}
@ -1181,11 +1179,11 @@ public final class MessageContentProcessor {
if (message.getMessage().getExpiresInSeconds() > 0) {
database.markExpireStarted(messageId, message.getExpirationStartTimestamp());
ApplicationContext.getInstance(context)
.getExpiringMessageManager()
.scheduleDeletion(messageId, true,
message.getExpirationStartTimestamp(),
message.getMessage().getExpiresInSeconds() * 1000L);
ApplicationDependencies.getExpiringMessageManager()
.scheduleDeletion(messageId,
true,
message.getExpirationStartTimestamp(),
message.getMessage().getExpiresInSeconds() * 1000L);
}
if (recipients.isSelf()) {
@ -1341,9 +1339,8 @@ public final class MessageContentProcessor {
if (expiresInMillis > 0) {
database.markExpireStarted(messageId, message.getExpirationStartTimestamp());
ApplicationContext.getInstance(context)
.getExpiringMessageManager()
.scheduleDeletion(messageId, isGroup, message.getExpirationStartTimestamp(), expiresInMillis);
ApplicationDependencies.getExpiringMessageManager()
.scheduleDeletion(messageId, isGroup, message.getExpirationStartTimestamp(), expiresInMillis);
}
if (recipient.isSelf()) {

Wyświetl plik

@ -111,7 +111,7 @@ public class MarkReadReceiver extends BroadcastReceiver {
}
if (smsExpirationInfo.size() + mmsExpirationInfo.size() > 0) {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager();
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
Stream.concat(Stream.of(smsExpirationInfo), Stream.of(mmsExpirationInfo))
.forEach(info -> expirationManager.scheduleDeletion(info.getId(), info.isMms(), info.getExpiresIn()));

Wyświetl plik

@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MessageDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.service.TimedEventManager;
/**
@ -79,7 +80,7 @@ public class ViewOnceMessageManager extends TimedEventManager<ViewOnceExpiration
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive()");
ApplicationContext.getInstance(context).getViewOnceMessageManager().scheduleIfNecessary();
ApplicationDependencies.getViewOnceMessageManager().scheduleIfNecessary();
}
}
}

Wyświetl plik

@ -7,12 +7,13 @@ import android.content.Context;
import android.content.Intent;
import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
public class ExpirationListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ApplicationContext.getInstance(context).getExpiringMessageManager().checkSchedule();
ApplicationDependencies.getExpiringMessageManager().checkSchedule();
}
public static void setAlarm(Context context, long waitTimeMillis) {

Wyświetl plik

@ -472,7 +472,7 @@ public class MessageSender {
private static void sendLocalMediaSelf(Context context, long messageId) {
try {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager();
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageDatabase mmsDatabase = DatabaseFactory.getMmsDatabase(context);
MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context);
OutgoingMediaMessage message = mmsDatabase.getOutgoingMessage(messageId);
@ -523,7 +523,7 @@ public class MessageSender {
private static void sendLocalTextSelf(Context context, long messageId) {
try {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager();
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context);
MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context);
SmsMessageRecord message = smsDatabase.getSmsMessage(messageId);