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 static final String TAG = Log.tag(ApplicationContext.class);
private ExpiringMessageManager expiringMessageManager; private PersistentLogger persistentLogger;
private ViewOnceMessageManager viewOnceMessageManager;
private PersistentLogger persistentLogger;
public static ApplicationContext getInstance(Context context) { public static ApplicationContext getInstance(Context context) {
return (ApplicationContext)context.getApplicationContext(); return (ApplicationContext)context.getApplicationContext();
@ -194,17 +192,6 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr
ApplicationDependencies.getShakeToReport().disable(); ApplicationDependencies.getShakeToReport().disable();
} }
public ExpiringMessageManager getExpiringMessageManager() {
if (expiringMessageManager == null) {
initializeExpiringMessageManager();
}
return expiringMessageManager;
}
public ViewOnceMessageManager getViewOnceMessageManager() {
return viewOnceMessageManager;
}
public PersistentLogger getPersistentLogger() { public PersistentLogger getPersistentLogger() {
return persistentLogger; return persistentLogger;
} }
@ -299,11 +286,11 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr
} }
private void initializeExpiringMessageManager() { private void initializeExpiringMessageManager() {
this.expiringMessageManager = new ExpiringMessageManager(this); ApplicationDependencies.getExpiringMessageManager().checkSchedule();
} }
private void initializeRevealableMessageManager() { private void initializeRevealableMessageManager() {
this.viewOnceMessageManager = new ViewOnceMessageManager(this); ApplicationDependencies.getViewOnceMessageManager().scheduleIfNecessary();
} }
private void initializePeriodicTasks() { 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.DatabaseFactory;
import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord; import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.service.ExpiringMessageManager; import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.util.DateUtils; import org.thoughtcrime.securesms.util.DateUtils;
@ -197,11 +198,11 @@ public class ConversationItemFooter extends LinearLayout {
this.timerView.startAnimation(); this.timerView.startAnimation();
if (messageRecord.getExpireStarted() + messageRecord.getExpiresIn() <= System.currentTimeMillis()) { if (messageRecord.getExpireStarted() + messageRecord.getExpiresIn() <= System.currentTimeMillis()) {
ApplicationContext.getInstance(getContext()).getExpiringMessageManager().checkSchedule(); ApplicationDependencies.getExpiringMessageManager().checkSchedule();
} }
} else if (!messageRecord.isOutgoing() && !messageRecord.isMediaPending()) { } else if (!messageRecord.isOutgoing() && !messageRecord.isMediaPending()) {
SignalExecutors.BOUNDED.execute(() -> { SignalExecutors.BOUNDED.execute(() -> {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(getContext()).getExpiringMessageManager(); ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
long id = messageRecord.getId(); long id = messageRecord.getId();
boolean mms = messageRecord.isMms(); boolean mms = messageRecord.isMms();

Wyświetl plik

@ -1382,9 +1382,7 @@ public class ConversationFragment extends LoggingFragment {
DatabaseFactory.getAttachmentDatabase(requireContext()).deleteAttachmentFilesForViewOnceMessage(messageRecord.getId()); DatabaseFactory.getAttachmentDatabase(requireContext()).deleteAttachmentFilesForViewOnceMessage(messageRecord.getId());
ApplicationContext.getInstance(requireContext()) ApplicationDependencies.getViewOnceMessageManager().scheduleIfNecessary();
.getViewOnceMessageManager()
.scheduleIfNecessary();
ApplicationDependencies.getJobManager().add(new MultiDeviceViewOnceOpenJob(new MessageDatabase.SyncMessageId(messageRecord.getIndividualRecipient().getId(), messageRecord.getDateSent()))); 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.payments.Payments;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess; import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.recipients.LiveRecipientCache; 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.TrimThreadsByDateManager;
import org.thoughtcrime.securesms.service.webrtc.SignalCallManager; import org.thoughtcrime.securesms.service.webrtc.SignalCallManager;
import org.thoughtcrime.securesms.shakereport.ShakeToReport; import org.thoughtcrime.securesms.shakereport.ShakeToReport;
@ -75,6 +77,8 @@ public class ApplicationDependencies {
private static volatile TypingStatusSender typingStatusSender; private static volatile TypingStatusSender typingStatusSender;
private static volatile DatabaseObserver databaseObserver; private static volatile DatabaseObserver databaseObserver;
private static volatile TrimThreadsByDateManager trimThreadsByDateManager; private static volatile TrimThreadsByDateManager trimThreadsByDateManager;
private static volatile ViewOnceMessageManager viewOnceMessageManager;
private static volatile ExpiringMessageManager expiringMessageManager;
private static volatile Payments payments; private static volatile Payments payments;
private static volatile ShakeToReport shakeToReport; private static volatile ShakeToReport shakeToReport;
private static volatile SignalCallManager signalCallManager; private static volatile SignalCallManager signalCallManager;
@ -341,9 +345,37 @@ public class ApplicationDependencies {
return trimThreadsByDateManager; 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() { public static TypingStatusRepository getTypingStatusRepository() {
if (typingStatusRepository == null) { if (typingStatusRepository == null) {
typingStatusRepository = provider.provideTypingStatusRepository(); synchronized (LOCK) {
if (typingStatusRepository == null) {
typingStatusRepository = provider.provideTypingStatusRepository();
}
}
} }
return typingStatusRepository; return typingStatusRepository;
@ -351,7 +383,11 @@ public class ApplicationDependencies {
public static TypingStatusSender getTypingStatusSender() { public static TypingStatusSender getTypingStatusSender() {
if (typingStatusSender == null) { if (typingStatusSender == null) {
typingStatusSender = provider.provideTypingStatusSender(); synchronized (LOCK) {
if (typingStatusSender == null) {
typingStatusSender = provider.provideTypingStatusSender();
}
}
} }
return typingStatusSender; return typingStatusSender;
@ -427,6 +463,8 @@ public class ApplicationDependencies {
@NonNull MessageNotifier provideMessageNotifier(); @NonNull MessageNotifier provideMessageNotifier();
@NonNull IncomingMessageObserver provideIncomingMessageObserver(); @NonNull IncomingMessageObserver provideIncomingMessageObserver();
@NonNull TrimThreadsByDateManager provideTrimThreadsByDateManager(); @NonNull TrimThreadsByDateManager provideTrimThreadsByDateManager();
@NonNull ViewOnceMessageManager provideViewOnceMessageManager();
@NonNull ExpiringMessageManager provideExpiringMessageManager();
@NonNull TypingStatusRepository provideTypingStatusRepository(); @NonNull TypingStatusRepository provideTypingStatusRepository();
@NonNull TypingStatusSender provideTypingStatusSender(); @NonNull TypingStatusSender provideTypingStatusSender();
@NonNull DatabaseObserver provideDatabaseObserver(); @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.SecurityEventListener;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess; import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.recipients.LiveRecipientCache; 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.TrimThreadsByDateManager;
import org.thoughtcrime.securesms.service.webrtc.SignalCallManager; import org.thoughtcrime.securesms.service.webrtc.SignalCallManager;
import org.thoughtcrime.securesms.shakereport.ShakeToReport; import org.thoughtcrime.securesms.shakereport.ShakeToReport;
@ -196,6 +198,16 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
return new TrimThreadsByDateManager(context); return new TrimThreadsByDateManager(context);
} }
@Override
public @NonNull ViewOnceMessageManager provideViewOnceMessageManager() {
return new ViewOnceMessageManager(context);
}
@Override
public @NonNull ExpiringMessageManager provideExpiringMessageManager() {
return new ExpiringMessageManager(context);
}
@Override @Override
public @NonNull TypingStatusRepository provideTypingStatusRepository() { public @NonNull TypingStatusRepository provideTypingStatusRepository() {
return new TypingStatusRepository(); return new TypingStatusRepository();

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -74,7 +74,7 @@ public class PushTextSendJob extends PushSendJob {
@Override @Override
public void onPushSend() throws IOException, NoSuchMessageException, UndeliverableMessageException { public void onPushSend() throws IOException, NoSuchMessageException, UndeliverableMessageException {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager(); ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageDatabase database = DatabaseFactory.getSmsDatabase(context); MessageDatabase database = DatabaseFactory.getSmsDatabase(context);
SmsMessageRecord record = database.getSmsMessage(messageId); 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); 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) { for (Pair<Long, Long> expiringMessage : expiringText) {
ApplicationContext.getInstance(context) ApplicationDependencies.getExpiringMessageManager()
.getExpiringMessageManager() .scheduleDeletion(expiringMessage.first(), false, envelopeTimestamp, expiringMessage.second());
.scheduleDeletion(expiringMessage.first(), false, envelopeTimestamp, expiringMessage.second());
} }
for (Pair<Long, Long> expiringMessage : expiringMedia) { for (Pair<Long, Long> expiringMessage : expiringMedia) {
ApplicationContext.getInstance(context) ApplicationDependencies.getExpiringMessageManager()
.getExpiringMessageManager() .scheduleDeletion(expiringMessage.first(), true, envelopeTimestamp, expiringMessage.second());
.scheduleDeletion(expiringMessage.first(), true, envelopeTimestamp, expiringMessage.second());
} }
} }
@ -1094,7 +1092,7 @@ public final class MessageContentProcessor {
ApplicationDependencies.getJobManager().add(new TrimThreadJob(insertResult.get().getThreadId())); ApplicationDependencies.getJobManager().add(new TrimThreadJob(insertResult.get().getThreadId()));
if (message.isViewOnce()) { if (message.isViewOnce()) {
ApplicationContext.getInstance(context).getViewOnceMessageManager().scheduleIfNecessary(); ApplicationDependencies.getViewOnceMessageManager().scheduleIfNecessary();
} }
} }
} }
@ -1181,11 +1179,11 @@ public final class MessageContentProcessor {
if (message.getMessage().getExpiresInSeconds() > 0) { if (message.getMessage().getExpiresInSeconds() > 0) {
database.markExpireStarted(messageId, message.getExpirationStartTimestamp()); database.markExpireStarted(messageId, message.getExpirationStartTimestamp());
ApplicationContext.getInstance(context) ApplicationDependencies.getExpiringMessageManager()
.getExpiringMessageManager() .scheduleDeletion(messageId,
.scheduleDeletion(messageId, true, true,
message.getExpirationStartTimestamp(), message.getExpirationStartTimestamp(),
message.getMessage().getExpiresInSeconds() * 1000L); message.getMessage().getExpiresInSeconds() * 1000L);
} }
if (recipients.isSelf()) { if (recipients.isSelf()) {
@ -1341,9 +1339,8 @@ public final class MessageContentProcessor {
if (expiresInMillis > 0) { if (expiresInMillis > 0) {
database.markExpireStarted(messageId, message.getExpirationStartTimestamp()); database.markExpireStarted(messageId, message.getExpirationStartTimestamp());
ApplicationContext.getInstance(context) ApplicationDependencies.getExpiringMessageManager()
.getExpiringMessageManager() .scheduleDeletion(messageId, isGroup, message.getExpirationStartTimestamp(), expiresInMillis);
.scheduleDeletion(messageId, isGroup, message.getExpirationStartTimestamp(), expiresInMillis);
} }
if (recipient.isSelf()) { if (recipient.isSelf()) {

Wyświetl plik

@ -111,7 +111,7 @@ public class MarkReadReceiver extends BroadcastReceiver {
} }
if (smsExpirationInfo.size() + mmsExpirationInfo.size() > 0) { if (smsExpirationInfo.size() + mmsExpirationInfo.size() > 0) {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager(); ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
Stream.concat(Stream.of(smsExpirationInfo), Stream.of(mmsExpirationInfo)) Stream.concat(Stream.of(smsExpirationInfo), Stream.of(mmsExpirationInfo))
.forEach(info -> expirationManager.scheduleDeletion(info.getId(), info.isMms(), info.getExpiresIn())); .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.AttachmentDatabase;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MessageDatabase; import org.thoughtcrime.securesms.database.MessageDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.service.TimedEventManager; import org.thoughtcrime.securesms.service.TimedEventManager;
/** /**
@ -79,7 +80,7 @@ public class ViewOnceMessageManager extends TimedEventManager<ViewOnceExpiration
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive()"); 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 android.content.Intent;
import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
public class ExpirationListener extends BroadcastReceiver { public class ExpirationListener extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
ApplicationContext.getInstance(context).getExpiringMessageManager().checkSchedule(); ApplicationDependencies.getExpiringMessageManager().checkSchedule();
} }
public static void setAlarm(Context context, long waitTimeMillis) { 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) { private static void sendLocalMediaSelf(Context context, long messageId) {
try { try {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager(); ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageDatabase mmsDatabase = DatabaseFactory.getMmsDatabase(context); MessageDatabase mmsDatabase = DatabaseFactory.getMmsDatabase(context);
MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context); MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context);
OutgoingMediaMessage message = mmsDatabase.getOutgoingMessage(messageId); OutgoingMediaMessage message = mmsDatabase.getOutgoingMessage(messageId);
@ -523,7 +523,7 @@ public class MessageSender {
private static void sendLocalTextSelf(Context context, long messageId) { private static void sendLocalTextSelf(Context context, long messageId) {
try { try {
ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager(); ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context); MessageDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context);
MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context); MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context);
SmsMessageRecord message = smsDatabase.getSmsMessage(messageId); SmsMessageRecord message = smsDatabase.getSmsMessage(messageId);