Rewrite the AppDependencies system.

This commit is contained in:
Greyson Parrelli
2024-05-22 15:44:24 -04:00
committed by Cody Henthorne
parent a0131bf39b
commit b6a4e1f145
560 changed files with 2909 additions and 3036 deletions

View File

@@ -7,7 +7,7 @@ import android.content.Intent;
import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
import java.util.ArrayList;
@@ -23,7 +23,7 @@ public class DeleteNotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
if (DELETE_NOTIFICATION_ACTION.equals(intent.getAction())) {
MessageNotifier notifier = ApplicationDependencies.getMessageNotifier();
MessageNotifier notifier = AppDependencies.getMessageNotifier();
final long[] ids = intent.getLongArrayExtra(EXTRA_IDS);
final boolean[] mms = intent.getBooleanArrayExtra(EXTRA_MMS);

View File

@@ -17,7 +17,7 @@ import org.thoughtcrime.securesms.database.MessageTable.ExpirationInfo;
import org.thoughtcrime.securesms.database.MessageTable.MarkedMessageInfo;
import org.thoughtcrime.securesms.database.MessageTable.SyncMessageId;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.jobs.CallLogEventSendJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceReadUpdateJob;
import org.thoughtcrime.securesms.jobs.SendReadReceiptJob;
@@ -45,7 +45,7 @@ public class MarkReadReceiver extends BroadcastReceiver {
final ArrayList<ConversationId> threads = intent.getParcelableArrayListExtra(THREADS_EXTRA);
if (threads != null) {
MessageNotifier notifier = ApplicationDependencies.getMessageNotifier();
MessageNotifier notifier = AppDependencies.getMessageNotifier();
for (ConversationId thread : threads) {
notifier.removeStickyThread(thread);
}
@@ -65,7 +65,7 @@ public class MarkReadReceiver extends BroadcastReceiver {
process(messageIdsCollection);
processCallEvents(threads, System.currentTimeMillis());
ApplicationDependencies.getMessageNotifier().updateNotification(context);
AppDependencies.getMessageNotifier().updateNotification(context);
finisher.finish();
});
}
@@ -113,7 +113,7 @@ public class MarkReadReceiver extends BroadcastReceiver {
for (RecipientId peer : peers) {
CallTable.Call lastCallInThread = SignalDatabase.calls().markAllCallEventsWithPeerBeforeTimestampRead(peer, timestamp);
if (lastCallInThread != null) {
ApplicationDependencies.getJobManager().add(CallLogEventSendJob.forMarkedAsReadInConversation(lastCallInThread));
AppDependencies.getJobManager().add(CallLogEventSendJob.forMarkedAsReadInConversation(lastCallInThread));
}
}
}
@@ -123,8 +123,8 @@ public class MarkReadReceiver extends BroadcastReceiver {
long now = System.currentTimeMillis();
SignalDatabase.messages().markExpireStarted(Stream.of(expirationInfo).map(info -> new kotlin.Pair<>(info.getId(), now)).toList());
ApplicationDependencies.getExpiringMessageManager()
.scheduleDeletion(Stream.of(expirationInfo).map(info -> info.copy(info.getId(), info.getExpiresIn(), now, info.isMms())).toList());
AppDependencies.getExpiringMessageManager()
.scheduleDeletion(Stream.of(expirationInfo).map(info -> info.copy(info.getId(), info.getExpiresIn(), now, info.isMms())).toList());
}
}
}

View File

@@ -8,10 +8,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.BubbleUtil;
import java.util.Optional;
@@ -34,7 +33,7 @@ public interface MessageNotifier {
@Override
public void onReceive(final Context context, final Intent intent) {
SignalExecutors.BOUNDED.execute(() -> {
ApplicationDependencies.getMessageNotifier().updateNotification(context);
AppDependencies.getMessageNotifier().updateNotification(context);
});
}
}

View File

@@ -13,7 +13,7 @@ import com.annimon.stream.Stream;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.notifications.v2.DefaultMessageNotifier;
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
import org.thoughtcrime.securesms.recipients.RecipientId;
@@ -186,7 +186,7 @@ public final class NotificationCancellationHelper {
}
Long threadId = SignalDatabase.threads().getThreadIdFor(recipientId);
Optional<ConversationId> focusedThread = ApplicationDependencies.getMessageNotifier().getVisibleThread();
Optional<ConversationId> focusedThread = AppDependencies.getMessageNotifier().getVisibleThread();
Long focusedThreadId = focusedThread.map(ConversationId::getThreadId).orElse(null);
Long focusedGroupStoryId = focusedThread.map(ConversationId::getGroupStoryId).orElse(null);

View File

@@ -31,7 +31,7 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.database.RecipientTable;
import org.thoughtcrime.securesms.database.RecipientTable.VibrateState;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
@@ -89,7 +89,7 @@ public class NotificationChannels {
if (instance == null) {
synchronized (NotificationChannels.class) {
if (instance == null) {
instance = new NotificationChannels(ApplicationDependencies.getApplication());
instance = new NotificationChannels(AppDependencies.getApplication());
}
}
}
@@ -694,7 +694,7 @@ public class NotificationChannels {
}
if (oldVersion < Version.AUDIO_ATTRIBUTE_CHANGE) {
Context context = ApplicationDependencies.getApplication();
Context context = AppDependencies.getApplication();
int existingMessageChannelVersion = TextSecurePreferences.getNotificationMessagesChannelVersion(context);
int newMessageChannelVersion = existingMessageChannelVersion + 1;
String existingChannelId = "messages_" + existingMessageChannelVersion;

View File

@@ -30,7 +30,7 @@ import org.thoughtcrime.securesms.database.MessageTable.MarkedMessageInfo;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.ParentStoryId;
import org.thoughtcrime.securesms.database.model.StoryType;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.notifications.v2.DefaultMessageNotifier;
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
@@ -114,13 +114,13 @@ public class RemoteReplyReceiver extends BroadcastReceiver {
throw new AssertionError("Unknown Reply method");
}
ApplicationDependencies.getMessageNotifier()
.addStickyThread(new ConversationId(threadId, groupStoryId != Long.MIN_VALUE ? groupStoryId : null),
AppDependencies.getMessageNotifier()
.addStickyThread(new ConversationId(threadId, groupStoryId != Long.MIN_VALUE ? groupStoryId : null),
intent.getLongExtra(EARLIEST_TIMESTAMP, System.currentTimeMillis()));
List<MarkedMessageInfo> messageIds = SignalDatabase.threads().setRead(threadId, true);
ApplicationDependencies.getMessageNotifier().updateNotification(context);
AppDependencies.getMessageNotifier().updateNotification(context);
MarkReadReceiver.process(messageIds);
});
}

View File

@@ -10,7 +10,7 @@ import android.text.TextUtils
import androidx.annotation.WorkerThread
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.database.LocalMetricsDatabase
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.util.DeviceProperties
import org.thoughtcrime.securesms.util.FeatureFlags
@@ -102,7 +102,7 @@ object SlowNotificationHeuristics {
return false
}
val configuration = getConfiguration()
val db = LocalMetricsDatabase.getInstance(ApplicationDependencies.getApplication())
val db = LocalMetricsDatabase.getInstance(AppDependencies.application)
val metrics = db.getMetrics()
@@ -133,7 +133,7 @@ object SlowNotificationHeuristics {
*/
@JvmStatic
fun isPotentiallyCausedByBatteryOptimizations(): Boolean {
val applicationContext = ApplicationDependencies.getApplication()
val applicationContext = AppDependencies.application
if (DeviceProperties.getDataSaverState(applicationContext) == DeviceProperties.DataSaverState.ENABLED) {
return false
}
@@ -187,7 +187,7 @@ object SlowNotificationHeuristics {
Log.d(TAG, "not enough messages for message latency")
return false
}
val db = LocalMetricsDatabase.getInstance(ApplicationDependencies.getApplication())
val db = LocalMetricsDatabase.getInstance(AppDependencies.application)
for ((percentage, threshold) in percentiles.entries) {
val averageLatency = db.eventPercent(SignalLocalMetrics.MessageLatency.NAME_HIGH, percentage.coerceAtMost(100).coerceAtLeast(0))
@@ -200,7 +200,7 @@ object SlowNotificationHeuristics {
}
private fun haveEnoughData(eventName: String, minimumEventAgeMs: Long): Boolean {
val db = LocalMetricsDatabase.getInstance(ApplicationDependencies.getApplication())
val db = LocalMetricsDatabase.getInstance(AppDependencies.application)
val oldestEvent = db.getOldestMetricTime(eventName)

View File

@@ -15,7 +15,7 @@ import org.signal.core.util.PendingIntentFlags
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.messages.IncomingMessageObserver
import org.thoughtcrime.securesms.notifications.MessageNotifier
@@ -395,8 +395,8 @@ private class CancelableExecutor {
}
if (!canceled.get()) {
Log.i(TAG, "Not canceled, notifying...")
ApplicationDependencies.getMessageNotifier().cancelDelayedNotifications()
ApplicationDependencies.getMessageNotifier().updateNotification(context, thread)
AppDependencies.messageNotifier.cancelDelayedNotifications()
AppDependencies.messageNotifier.updateNotification(context, thread)
} else {
Log.w(TAG, "Canceled, not notifying...")
}

View File

@@ -17,7 +17,7 @@ import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto
import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto
import org.thoughtcrime.securesms.contacts.avatars.GeneratedContactPhoto
import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri
import org.thoughtcrime.securesms.notifications.NotificationIds
import org.thoughtcrime.securesms.recipients.Recipient
@@ -42,7 +42,7 @@ fun Recipient.getContactDrawable(context: Context): Drawable? {
try {
val transforms: MutableList<Transformation<Bitmap>> = mutableListOf()
if (shouldBlurAvatar) {
transforms += BlurTransformation(ApplicationDependencies.getApplication(), 0.25f, BlurTransformation.MAX_RADIUS)
transforms += BlurTransformation(AppDependencies.application, 0.25f, BlurTransformation.MAX_RADIUS)
}
transforms += CircleCrop()

View File

@@ -25,7 +25,7 @@ import org.thoughtcrime.securesms.conversation.ConversationIntents
import org.thoughtcrime.securesms.conversation.colors.AvatarColor
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.database.model.InMemoryMessageRecord
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.notifications.NotificationChannels
import org.thoughtcrime.securesms.notifications.NotificationIds
@@ -201,7 +201,7 @@ object NotificationFactory {
private fun shouldAlert(conversation: NotificationConversation, lastNotificationTimestamp: Long, alertOverride: Boolean): Boolean {
val throttle: Duration = when {
conversation.recipient.isGroup && (conversation.mostRecentNotification as? MessageNotification)?.hasSelfMention == false -> GROUP_THROTTLE
ApplicationDependencies.getIncomingMessageObserver().decryptionDrained -> STILL_DECRYPTING_INDIVIDUAL_THROTTLE
AppDependencies.incomingMessageObserver.decryptionDrained -> STILL_DECRYPTING_INDIVIDUAL_THROTTLE
else -> 0.seconds
}
val canAlertBasedOnTime: Boolean = lastNotificationTimestamp < System.currentTimeMillis() - throttle.inWholeMilliseconds || lastNotificationTimestamp > System.currentTimeMillis()

View File

@@ -7,7 +7,7 @@ import org.signal.core.util.asListContains
import org.signal.core.util.concurrent.SignalExecutors
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.database.model.MessageId
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader
import org.thoughtcrime.securesms.mms.Slide
import org.thoughtcrime.securesms.providers.BlobProvider
@@ -143,7 +143,7 @@ object NotificationThumbnails {
thumbnailCache[messageId] = CachedThumbnail(thumbnailUri, result.mimeType)
}
ApplicationDependencies.getMessageNotifier().updateNotification(context, notificationItem.thread)
AppDependencies.messageNotifier.updateNotification(context, notificationItem.thread)
} else {
Log.i(TAG, "Unable to compress attachment thumbnail for $messageId")
}